Что такое формат файла CSHTML?
Файл .cshtml - это серверный веб-шаблон ASP.NET Razor, который объединяет код C# и разметку HTML в одном исходном файле. Формат был представлен в январе 2011 года вместе с ASP.NET MVC 3 как часть движка представлений Microsoft Razor.
Символ @ является основным синтаксическим маркером: везде, где он появляется, парсер Razor переключается из режима рендеринга HTML в режим выполнения C#. Представление может включать объявления @model, импорт пространств имен @using, блоки @functions, тег-хелперы, HTML-хелперы и слоты @section для общей страницы _Layout.cshtml. Движок Razor компилирует файл на стороне сервера в C#, затем в промежуточный язык .NET (IL); браузеру отправляется только отрендеренный HTML - исходный код .cshtml никогда не раскрывается клиентам.
Префикс cs отличает эти файлы от представлений Razor .vbhtml, использующих Visual Basic вместо C#. В ASP.NET Core 2.0 появились Razor Pages, которые также используют расширение .cshtml, но добавляют директиву @page в начале, что позволяет файлу выступать в роли самостоятельного контроллера и представления. Для паттернов одностраничных приложений (SPA) компоненты Blazor используют расширение .razor и во многом заменяют .cshtml в новых проектах ASP.NET Core.
Файлы .cshtml редактируются в Visual Studio или Visual Studio Code с установленным C# Dev Kit. Открытие такого файла напрямую в браузере отобразит исходный код, а не готовую HTML-страницу.
Безопасность и защита
РИСК: LOWФайл .cshtml является обычным текстовым исходным файлом - его открытие в текстовом редакторе или IDE безопасно. Серверы должны быть настроены на блокировку прямого HTTP-доступа к файлам .cshtml (IIS и Kestrel делают это по умолчанию). Неправильно настроенный сервер, отдающий .cshtml как обычный текст, может привести к утечке логики приложения и строк подключения, что является риском безопасности для оператора сервера, а не для человека, читающего файл локально.
Детали формата
в двух словахПрограммы, открывающие файлы CSHTML
Технические подробности
глубокая спецификация| Кодировка | Текст UTF-8 (по умолчанию в Visual Studio; поддерживаются и другие кодировки) |
| Контейнер | Обычный текст - перемежающийся код C# и разметка HTML; без бинарной оболочки |
| MIME-тип | text/html (для отрендеренного вывода в браузер); text/plain для исходного файла в редакторах |
| Маркер синтаксиса Razor | Символ @ переключает из режима рендеринга HTML в режим выполнения C# |
| Компиляция | Компилируется на стороне сервера движком Razor в C#, затем в .NET IL; исходный файл никогда не передается в браузер |
| Ключевые директивы | @model, @using, @functions, @section, @page (Razor Pages), @inject |
| Версия синтаксиса Razor | v1 (MVC 3, 2011) → v2 (MVC 4) → v3 (MVC 5/Core 1) → Razor 8 (ASP.NET Core 8, 2023) |
| Тег-хелперы | Поддерживаются начиная с ASP.NET Core 1.0; заменяют HTML-хелперы для генерации атрибутов на стороне сервера |
| Система макетов | _Layout.cshtml определяет общую структуру страницы; представления используют блоки @section для вставки контента |
| Связанные ОС | Windows (IIS/IIS Express), Linux и macOS (Kestrel, Docker) |
| Вариант Razor Pages | Директива @page превращает файл .cshtml в самодостаточный контроллер+представление (ASP.NET Core 2.0+) |
| Доступность клиенту | Исходный файл никогда не обслуживается браузером; прямой доступ возвращает необработанный текст или ошибку HTTP |
| Аналог на VB | .vbhtml (идентичный синтаксис Razor с использованием Visual Basic вместо C#) |
| Современный преемник | .razor (компоненты Blazor) для приложений в стиле SPA в ASP.NET Core |
| Выпущен | 2011 (ASP.NET MVC 3 / Razor syntax v1) |
| Последняя версия | Razor 8 (ASP.NET Core 8.0, November 2023) |
| Спецификация | learn.microsoft.com |
Конвертации CSHTML
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах CSHTML.