Hvad er CSHTML-filformatet?
En .cshtml-fil er en ASP.NET Razor server-side-webskabelon, der kombinerer C#-kode og HTML-markup i en enkelt kildefil. Formatet blev introduceret i januar 2011 med ASP.NET MVC 3 som en del af Microsofts Razor-visningsmotor.
@-tegnet er den centrale syntaktiske markør: uanset hvor det optræder, skifter Razor-parseren fra HTML-renderingstilstand til C#-eksekveringstilstand. En visning kan indeholde @model-erklæringer, @using-namespace-importer, @functions-blokke, tag-helpers, HTML-helpers og @section-pladsholdere til en delt _Layout.cshtml-side. Razor-motoren kompilerer filen på server-siden til C#, derefter til .NET intermediate language (IL); kun den færdige HTML sendes nogensinde til browseren - .cshtml-kilden bliver aldrig eksponeret for klienter.
cs-præfikset adskiller disse filer fra .vbhtml Razor-visninger, der bruger Visual Basic i stedet for C#. ASP.NET Core 2.0 introducerede Razor Pages, som også bruger .cshtml, men tilføjer et @page-direktiv øverst, hvilket får filen til at fungere som sin egen selvstændige controller og visning. Til single-page application-mønstre bruger Blazor-komponenter filendelsen .razor og erstatter i vid udstrækning .cshtml i nye ASP.NET Core-projekter.
.cshtml-filer redigeres i Visual Studio eller Visual Studio Code med C# Dev Kit. Hvis man åbner en direkte i en browser, vises den rå kildekode i stedet for den færdige HTML.
Sikkerhed og tryghed
RISIKO: LOW.cshtml er en kildefil i ren tekst - det er ufarligt at åbne den i et tekstredigeringsprogram eller IDE. Servere bør være konfigureret til at blokere direkte HTTP-adgang til .cshtml-filer (IIS og Kestrel gør dette som standard). En fejlkonfigureret server, der serverer .cshtml som rå tekst, kan lække applikationslogik og forbindelsesstrenge - en sikkerhedsrisiko for serveroperatøren, ikke for den person, der læser filen lokalt.
Formatdetaljer
kort fortaltProgrammer der åbner CSHTML-filer
Tekniske detaljer
dyb specifikation| Kodning | UTF-8 tekst (standard i Visual Studio; andre kodninger understøttes) |
| Container | Ren tekst - sammenflettet C#-kode og HTML-markup; ingen binær wrapper |
| MIME-type | text/html (renderet output til browser); text/plain for kildefilen i editorer |
| Razor-syntaksmarkør | @-tegnet skifter fra HTML-renderingstilstand til C#-eksekveringstilstand |
| Kompilering | Kompileret på server-siden af Razor-motoren til C#, derefter til .NET IL; kildefilen leveres aldrig til browseren |
| Vigtige direktiver | @model, @using, @functions, @section, @page (Razor Pages), @inject |
| Razor-syntaksversion | v1 (MVC 3, 2011) → v2 (MVC 4) → v3 (MVC 5/Core 1) → Razor 8 (ASP.NET Core 8, 2023) |
| Tag-helpers | Understøttet fra ASP.NET Core 1.0; erstatter HTML-helpers til server-renderet attributgenerering |
| Layout-system | _Layout.cshtml definerer delt side-chrome; visninger bruger @section-blokke til at indsætte indhold |
| Associeret OS | Windows (IIS/IIS Express), Linux og macOS (Kestrel, Docker) |
| Razor Pages-variant | @page-direktivet gør en .cshtml-fil til en selvstændig controller+visning (ASP.NET Core 2.0+) |
| Klienteksponering | Kildefilen serveres aldrig til browseren; direkte adgang returnerer rå tekst eller en HTTP-fejl |
| VB-modstykke | .vbhtml (identisk Razor-syntaks ved brug af Visual Basic i stedet for C#) |
| Moderne efterfølgermønster | .razor (Blazor-komponenter) til SPA-lignende applikationer i ASP.NET Core |
| Udgivet | 2011 (ASP.NET MVC 3 / Razor syntax v1) |
| Seneste version | Razor 8 (ASP.NET Core 8.0, November 2023) |
| Specifikation | learn.microsoft.com |
CSHTML-konverteringer
Fællesskabets Q&A
spurgt af brugereIngen spørgsmål endnu - vær den første til at spørge om CSHTML-filer.