Was ist das CSHTML-Dateiformat?
Eine .cshtml-Datei ist ein serverseitiges ASP.NET Razor-Web-Template, das C#-Code und HTML-Markup in einer einzigen Quelldatei kombiniert. Das Format wurde im Januar 2011 mit ASP.NET MVC 3 als Teil der Razor-View-Engine von Microsoft eingeführt.
Das @-Zeichen ist der zentrale syntaktische Marker: Überall dort, wo es erscheint, wechselt der Razor-Parser vom HTML-Rendering-Modus in den C#-Ausführungsmodus. Eine View kann @model-Deklarationen, @using-Namespace-Importe, @functions-Blöcke, Tag-Helper, HTML-Helper und @section-Slots für eine gemeinsam genutzte _Layout.cshtml-Seite enthalten. Die Razor-Engine kompiliert die Datei serverseitig in C#, dann in die .NET Intermediate Language (IL); nur das gerenderte HTML wird jemals an den Browser gesendet - der .cshtml-Quellcode wird niemals gegenüber Clients offengelegt.
Das Präfix cs unterscheidet diese Dateien von .vbhtml-Razor-Views, die Visual Basic anstelle von C# verwenden. ASP.NET Core 2.0 führte Razor Pages ein, die ebenfalls .cshtml verwenden, aber eine @page-Direktive am Anfang hinzufügen, wodurch die Datei als ihr eigener, in sich geschlossener Controller und View fungiert. Für Single-Page-Application-Muster verwenden Blazor-Komponenten die Erweiterung .razor und ersetzen .cshtml in neuen ASP.NET Core-Projekten weitgehend.
.cshtml-Dateien werden in Visual Studio oder Visual Studio Code mit dem C# Dev Kit bearbeitet. Das direkte Öffnen in einem Browser zeigt den rohen Quellcode anstelle von gerendertem HTML an.
Sicherheit
RISIKO: LOW.cshtml ist eine Klartext-Quelldatei - das Öffnen in einem Texteditor oder einer IDE ist harmlos. Server sollten so konfiguriert sein, dass sie den direkten HTTP-Zugriff auf .cshtml-Dateien blockieren (IIS und Kestrel tun dies standardmäßig). Ein falsch konfigurierter Server, der .cshtml als Rohtext ausliefert, könnte Anwendungslogik und Verbindungszeichenfolgen preisgeben - ein Sicherheitsrisiko für den Serverbetreiber, nicht für die Person, die die Datei lokal liest.
Formatdetails
kurz gefasstProgramme zum Öffnen von CSHTML-Dateien
Technische Details
technische Spezifikation| Kodierung | UTF-8-Text (Standard in Visual Studio; andere Kodierungen unterstützt) |
| Container | Klartext - verschachtelter C#-Code und HTML-Markup; kein binärer Wrapper |
| MIME-Typ | text/html (gerenderte Ausgabe an Browser); text/plain für die Quelldatei in Editoren |
| Razor-Syntax-Marker | @-Zeichen wechselt vom HTML-Rendering-Modus in den C#-Ausführungsmodus |
| Kompilierung | Wird serverseitig von der Razor-Engine in C#, dann in .NET IL kompiliert; Quelldatei wird nie an den Browser geliefert |
| Wichtige Direktiven | @model, @using, @functions, @section, @page (Razor Pages), @inject |
| Razor-Syntax-Version | v1 (MVC 3, 2011) → v2 (MVC 4) → v3 (MVC 5/Core 1) → Razor 8 (ASP.NET Core 8, 2023) |
| Tag-Helper | Unterstützt ab ASP.NET Core 1.0; ersetzen HTML-Helper für die servergerenderte Attributgenerierung |
| Layout-System | _Layout.cshtml definiert das gemeinsame Seiten-Grundgerüst; Views verwenden @section-Blöcke, um Inhalte einzufügen |
| Zugehöriges OS | Windows (IIS/IIS Express), Linux und macOS (Kestrel, Docker) |
| Razor Pages-Variante | @page-Direktive macht eine .cshtml-Datei zu einem eigenständigen Controller+View (ASP.NET Core 2.0+) |
| Client-Exposition | Quelldatei wird niemals an den Browser ausgeliefert; direkter Zugriff gibt Rohtext oder einen HTTP-Fehler zurück |
| VB-Gegenstück | .vbhtml (identische Razor-Syntax unter Verwendung von Visual Basic anstelle von C#) |
| Modernes Nachfolgemuster | .razor (Blazor-Komponenten) für Anwendungen im SPA-Stil in ASP.NET Core |
| Veröffentlicht | 2011 (ASP.NET MVC 3 / Razor syntax v1) |
| Neueste Version | Razor 8 (ASP.NET Core 8.0, November 2023) |
| Spezifikation | learn.microsoft.com |
CSHTML-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu CSHTML-Dateien.