¿Qué es el formato de archivo CSHTML?
Un archivo .cshtml es una plantilla web del lado del servidor de ASP.NET Razor que combina código C# y marcado HTML en un único archivo de origen. El formato se introdujo en enero de 2011 con ASP.NET MVC 3 como parte del motor de vistas Razor de Microsoft.
El carácter @ es el marcador sintáctico central: dondequiera que aparezca, el analizador de Razor cambia del modo de renderizado HTML al modo de ejecución de C#. Una vista puede incluir declaraciones @model, importaciones de espacios de nombres @using, bloques @functions, tag helpers, HTML helpers y ranuras @section para una página compartida _Layout.cshtml. El motor Razor compila el archivo en el servidor a C#, luego al lenguaje intermedio (IL) de .NET; solo el HTML renderizado se envía al navegador: el código fuente .cshtml nunca se expone a los clientes.
El prefijo cs distingue estos archivos de las vistas Razor .vbhtml que utilizan Visual Basic en lugar de C#. ASP.NET Core 2.0 introdujo Razor Pages, que también utilizan .cshtml pero añaden una directiva @page en la parte superior, lo que hace que el archivo actúe como su propio controlador y vista autónomos. Para patrones de aplicaciones de página única (SPA), los componentes de Blazor utilizan la extensión .razor y reemplazan en gran medida a .cshtml en los nuevos proyectos de ASP.NET Core.
Los archivos .cshtml se editan en Visual Studio o Visual Studio Code con el C# Dev Kit. Abrir uno directamente en un navegador muestra el código fuente sin procesar en lugar del HTML renderizado.
Seguridad y protección
RIESGO: LOWUn archivo .cshtml es un archivo fuente de texto plano: abrirlo en un editor de texto o IDE es inofensivo. Los servidores deben estar configurados para bloquear el acceso HTTP directo a los archivos .cshtml (IIS y Kestrel lo hacen por defecto). Un servidor mal configurado que sirva .cshtml como texto sin procesar podría filtrar la lógica de la aplicación y las cadenas de conexión, lo que representa un riesgo de seguridad para el operador del servidor, no para la persona que lee el archivo localmente.
Detalles del formato
en pocas palabrasProgramas que abren archivos CSHTML
Detalles técnicos
especificación profunda| Codificación | Texto UTF-8 (predeterminado en Visual Studio; se admiten otras codificaciones) |
| Contenedor | Texto plano: código C# y marcado HTML entrelazados; sin contenedor binario |
| Tipo MIME | text/html (salida renderizada al navegador); text/plain para el archivo fuente en editores |
| Marcador de sintaxis Razor | El carácter @ cambia del modo de renderizado HTML al modo de ejecución de C# |
| Compilación | Compilado en el servidor por el motor Razor a C#, luego a .NET IL; el archivo fuente nunca se entrega al navegador |
| Directivas clave | @model, @using, @functions, @section, @page (Razor Pages), @inject |
| Versión de sintaxis Razor | v1 (MVC 3, 2011) → v2 (MVC 4) → v3 (MVC 5/Core 1) → Razor 8 (ASP.NET Core 8, 2023) |
| Tag helpers | Soportados desde ASP.NET Core 1.0; reemplazan a los HTML helpers para la generación de atributos renderizados en el servidor |
| Sistema de diseño | _Layout.cshtml define el diseño compartido de la página; las vistas usan bloques @section para inyectar contenido |
| SO asociado | Windows (IIS/IIS Express), Linux y macOS (Kestrel, Docker) |
| Variante Razor Pages | La directiva @page convierte un archivo .cshtml en un controlador+vista autónomo (ASP.NET Core 2.0+) |
| Exposición al cliente | El archivo fuente nunca se sirve al navegador; el acceso directo devuelve texto sin formato o un error HTTP |
| Contraparte en VB | .vbhtml (sintaxis Razor idéntica usando Visual Basic en lugar de C#) |
| Patrón sucesor moderno | .razor (componentes de Blazor) para aplicaciones de estilo SPA en ASP.NET Core |
| Lanzado | 2011 (ASP.NET MVC 3 / Razor syntax v1) |
| Última versión | Razor 8 (ASP.NET Core 8.0, November 2023) |
| Especificación | learn.microsoft.com |
Conversiones de CSHTML
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos CSHTML.