Wat is het CSHTML-bestandsformaat?
Een .cshtml-bestand is een ASP.NET Razor server-side websjabloon dat C#-code en HTML-opmaak combineert in één bronbestand. Het formaat werd geïntroduceerd in januari 2011 met ASP.NET MVC 3 als onderdeel van Microsofts Razor-view-engine.
Het @-teken is de belangrijkste syntactische markering: overal waar het verschijnt, schakelt de Razor-parser over van de HTML-weergavemodus naar de C#-uitvoeringsmodus. Een view kan @model-declaraties, @using namespace-imports, @functions-blokken, tag helpers, HTML-helpers en @section-slots voor een gedeelde _Layout.cshtml-pagina bevatten. De Razor-engine compileert het bestand aan de serverzijde naar C#, en vervolgens naar .NET intermediate language (IL); alleen de gerenderde HTML wordt naar de browser verzonden - de .cshtml-bron wordt nooit aan clients getoond.
Het voorvoegsel cs onderscheidt deze bestanden van .vbhtml Razor-views die Visual Basic gebruiken in plaats van C#. ASP.NET Core 2.0 introduceerde Razor Pages, die ook .cshtml gebruiken maar een @page-richtlijn bovenaan toevoegen, waardoor het bestand fungeert als zijn eigen onafhankelijke controller en view. Voor single-page application-patronen gebruiken Blazor-componenten de extensie .razor en vervangen deze grotendeels .cshtml in nieuwe ASP.NET Core-projecten.
.cshtml-bestanden worden bewerkt in Visual Studio of Visual Studio Code met de C# Dev Kit. Als u er een rechtstreeks in een browser opent, wordt de onbewerkte broncode weergegeven in plaats van de gerenderde HTML.
Beveiliging & veiligheid
RISICO: LOW.cshtml is een bronbestand in platte tekst - het openen ervan in een teksteditor of IDE is ongevaarlijk. Servers moeten worden geconfigureerd om directe HTTP-toegang tot .cshtml-bestanden te blokkeren (IIS en Kestrel doen dit standaard). Een verkeerd geconfigureerde server die .cshtml als onbewerkte tekst serveert, kan applicatielogica en verbindingsreeksen lekken - een beveiligingsrisico voor de serverbeheerder, niet voor de persoon die het bestand lokaal leest.
Formaatdetails
in een notendopProgramma's die CSHTML-bestanden openen
Technische details
diepe specificaties| Codering | UTF-8 tekst (standaard in Visual Studio; andere coderingen ondersteund) |
| Container | Platte tekst - verweven C#-code en HTML-opmaak; geen binaire wrapper |
| MIME-type | text/html (gerenderde uitvoer naar browser); text/plain voor het bronbestand in editors |
| Razor-syntaxis-markering | @-teken schakelt over van HTML-weergavemodus naar C#-uitvoeringsmodus |
| Compilatie | Server-side gecompileerd door de Razor-engine naar C#, daarna naar .NET IL; bronbestand wordt nooit aan de browser geleverd |
| Belangrijke richtlijnen | @model, @using, @functions, @section, @page (Razor Pages), @inject |
| Razor-syntaxisversie | v1 (MVC 3, 2011) → v2 (MVC 4) → v3 (MVC 5/Core 1) → Razor 8 (ASP.NET Core 8, 2023) |
| Tag helpers | Ondersteund vanaf ASP.NET Core 1.0; vervangen HTML-helpers voor server-gerenderde attribuutgeneratie |
| Layout-systeem | _Layout.cshtml definieert de gedeelde paginastructuur; views gebruiken @section-blokken om inhoud te injecteren |
| Geassocieerd OS | Windows (IIS/IIS Express), Linux en macOS (Kestrel, Docker) |
| Razor Pages-variant | @page-richtlijn maakt een .cshtml-bestand een onafhankelijke controller+view (ASP.NET Core 2.0+) |
| Blootstelling aan client | Bronbestand wordt nooit aan de browser geserveerd; directe toegang retourneert onbewerkte tekst of een HTTP-fout |
| VB-tegenhanger | .vbhtml (identieke Razor-syntaxis met Visual Basic in plaats van C#) |
| Modern opvolgerpatroon | .razor (Blazor-componenten) voor SPA-achtige applicaties in ASP.NET Core |
| Uitgebracht | 2011 (ASP.NET MVC 3 / Razor syntax v1) |
| Laatste versie | Razor 8 (ASP.NET Core 8.0, November 2023) |
| Specificatie | learn.microsoft.com |
CSHTML conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over CSHTML-bestanden.