Co to jest format pliku CSHTML?
Plik .cshtml to szablon internetowy ASP.NET Razor działający po stronie serwera, który łączy kod C# i znacznik HTML w jednym pliku źródłowym. Format ten został wprowadzony w styczniu 2011 roku wraz z ASP.NET MVC 3 jako część silnika widoków Razor firmy Microsoft.
Znak @ jest kluczowym znacznikiem składniowym: wszędzie tam, gdzie się pojawia, parser Razor przełącza się z trybu renderowania HTML na tryb wykonywania C#. Widok może zawierać deklaracje @model, importy przestrzeni nazw @using, bloki @functions, tag helpery, HTML helpery oraz miejsca na sekcje @section dla współdzielonej strony _Layout.cshtml. Silnik Razor kompiluje plik po stronie serwera do języka C#, a następnie do języka pośredniego .NET (IL); do przeglądarki wysyłany jest wyłącznie wyrenderowany HTML - źródło .cshtml nigdy nie jest udostępniane klientom.
Prefiks cs odróżnia te pliki od widoków Razor .vbhtml, które używają Visual Basic zamiast C#. ASP.NET Core 2.0 wprowadziło Razor Pages, które również używają rozszerzenia .cshtml, ale dodają dyrektywę @page na górze, dzięki czemu plik działa jako samodzielny kontroler i widok. W przypadku wzorców aplikacji jednostronicowych (SPA), komponenty Blazor używają rozszerzenia .razor i w dużej mierze zastępują .cshtml w nowych projektach ASP.NET Core.
Pliki .cshtml są edytowane w Visual Studio lub Visual Studio Code z dodatkiem C# Dev Kit. Otwarcie pliku bezpośrednio w przeglądarce spowoduje wyświetlenie surowego kodu źródłowego, a nie wyrenderowanego HTML.
Bezpieczeństwo
RYZYKO: LOW.cshtml to plik źródłowy w formacie zwykłego tekstu - otwarcie go w edytorze tekstu lub IDE jest nieszkodliwe. Serwery powinny być skonfigurowane tak, aby blokować bezpośredni dostęp HTTP do plików .cshtml (IIS i Kestrel robią to domyślnie). Błędnie skonfigurowany serwer, który serwuje .cshtml jako surowy tekst, mógłby ujawnić logikę aplikacji i parametry połączenia (connection strings) - stanowi to ryzyko bezpieczeństwa dla operatora serwera, a nie dla osoby czytającej plik lokalnie.
Szczegóły formatu
w pigułceProgramy otwierające pliki CSHTML
Szczegóły techniczne
specyfikacja| Kodowanie | Tekst UTF-8 (domyślny w Visual Studio; inne kodowania są obsługiwane) |
| Kontener | Zwykły tekst - przeplatany kod C# i znaczniki HTML; brak binarnego opakowania |
| Typ MIME | text/html (wyrenderowany wynik dla przeglądarki); text/plain dla pliku źródłowego w edytorach |
| Znacznik składni Razor | Znak @ przełącza z trybu renderowania HTML na tryb wykonywania C# |
| Kompilacja | Kompilowany po stronie serwera przez silnik Razor do C#, a następnie do .NET IL; plik źródłowy nigdy nie jest dostarczany do przeglądarki |
| Kluczowe dyrektywy | @model, @using, @functions, @section, @page (Razor Pages), @inject |
| Wersja składni Razor | v1 (MVC 3, 2011) → v2 (MVC 4) → v3 (MVC 5/Core 1) → Razor 8 (ASP.NET Core 8, 2023) |
| Tag helpery | Obsługiwane od ASP.NET Core 1.0; zastępują HTML helpery przy generowaniu atrybutów renderowanych po stronie serwera |
| System układów (Layout) | _Layout.cshtml definiuje wspólny szkielet strony; widoki używają bloków @section do wstrzykiwania treści |
| Powiązany system operacyjny | Windows (IIS/IIS Express), Linux i macOS (Kestrel, Docker) |
| Wariant Razor Pages | Dyrektywa @page sprawia, że plik .cshtml staje się samodzielnym kontrolerem i widokiem (ASP.NET Core 2.0+) |
| Ekspozycja klienta | Plik źródłowy nigdy nie jest serwowany do przeglądarki; bezpośredni dostęp zwraca surowy tekst lub błąd HTTP |
| Odpowiednik VB | .vbhtml (identyczna składnia Razor używająca Visual Basic zamiast C#) |
| Nowoczesny następca | .razor (komponenty Blazor) dla aplikacji typu SPA w ASP.NET Core |
| Wydano | 2011 (ASP.NET MVC 3 / Razor syntax v1) |
| Najnowsza wersja | Razor 8 (ASP.NET Core 8.0, November 2023) |
| Specyfikacja | learn.microsoft.com |
Konwersje CSHTML
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki CSHTML.