Che cos'è il formato di file CSHTML?
Un file .cshtml è un template web lato server ASP.NET Razor che combina codice C# e markup HTML in un singolo file sorgente. Il formato è stato introdotto nel gennaio 2011 con ASP.NET MVC 3 come parte del motore di visualizzazione Razor di Microsoft.
Il carattere @ è il marcatore sintattico principale: ovunque appaia, il parser Razor passa dalla modalità di rendering HTML alla modalità di esecuzione C#. Una vista può includere dichiarazioni @model, importazioni di namespace @using, blocchi @functions, tag helper, HTML helper e slot @section per una pagina condivisa _Layout.cshtml. Il motore Razor compila il file lato server in C#, quindi in linguaggio intermedio .NET (IL); solo l'HTML renderizzato viene inviato al browser - il sorgente .cshtml non viene mai esposto ai client.
Il prefisso cs distingue questi file dalle viste Razor .vbhtml che utilizzano Visual Basic invece di C#. ASP.NET Core 2.0 ha introdotto le Razor Pages, che utilizzano anch'esse .cshtml ma aggiungono una direttiva @page in alto, rendendo il file un controller e una vista autosufficienti. Per i pattern di applicazioni a pagina singola (SPA), i componenti Blazor utilizzano l'estensione .razor e sostituiscono ampiamente .cshtml nei nuovi progetti ASP.NET Core.
I file .cshtml vengono modificati in Visual Studio o Visual Studio Code con il C# Dev Kit. Aprendone uno direttamente in un browser verrà visualizzato il codice sorgente grezzo anziché l'HTML renderizzato.
Sicurezza e incolumità
RISCHIO: LOWIl file .cshtml è un file sorgente in testo semplice - aprirlo in un editor di testo o IDE è innocuo. I server dovrebbero essere configurati per bloccare l'accesso HTTP diretto ai file .cshtml (IIS e Kestrel lo fanno per impostazione predefinita). Un server mal configurato che serve .cshtml come testo grezzo potrebbe esporre la logica dell'applicazione e le stringhe di connessione - un rischio per la sicurezza dell'operatore del server, non per la persona che legge il file localmente.
Dettagli del formato
in sintesiProgrammi che aprono file CSHTML
Dettagli tecnici
specifiche approfondite| Codifica | Testo UTF-8 (predefinito in Visual Studio; altre codifiche supportate) |
| Contenitore | Testo semplice - codice C# e markup HTML intercalati; nessun wrapper binario |
| Tipo MIME | text/html (output renderizzato al browser); text/plain per il file sorgente negli editor |
| Marcatore sintassi Razor | Il carattere @ passa dalla modalità rendering HTML alla modalità esecuzione C# |
| Compilazione | Compilato lato server dal motore Razor in C#, quindi in .NET IL; il file sorgente non viene mai consegnato al browser |
| Direttive chiave | @model, @using, @functions, @section, @page (Razor Pages), @inject |
| Versione sintassi Razor | v1 (MVC 3, 2011) → v2 (MVC 4) → v3 (MVC 5/Core 1) → Razor 8 (ASP.NET Core 8, 2023) |
| Tag helper | Supportati da ASP.NET Core 1.0; sostituiscono gli HTML helper per la generazione di attributi renderizzati dal server |
| Sistema di layout | _Layout.cshtml definisce la struttura condivisa della pagina; le viste usano blocchi @section per iniettare contenuti |
| OS associati | Windows (IIS/IIS Express), Linux e macOS (Kestrel, Docker) |
| Variante Razor Pages | La direttiva @page rende un file .cshtml un controller+vista autonomo (ASP.NET Core 2.0+) |
| Esposizione client | Il file sorgente non viene mai servito al browser; l'accesso diretto restituisce testo grezzo o un errore HTTP |
| Controparte VB | .vbhtml (sintassi Razor identica che utilizza Visual Basic invece di C#) |
| Pattern successore moderno | .razor (componenti Blazor) per applicazioni in stile SPA in ASP.NET Core |
| Rilasciato | 2011 (ASP.NET MVC 3 / Razor syntax v1) |
| Ultima versione | Razor 8 (ASP.NET Core 8.0, November 2023) |
| Specifica | learn.microsoft.com |
Conversioni CSHTML
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file CSHTML.