net mvc asp c# asp.net-mvc razor

c# - asp - razor mvc



Razor/CSHTML-¿Alguna ventaja sobre lo que tenemos? (4)

Cualquiera que esté usando la nueva característica de páginas CSHTML y descubre que prefiere esta nueva sintaxis de motor de vista sobre el motor de vista predeterminado ASP.NET MVC existente o sobre formularios web, y si es así, ¿por qué? ¿Qué pasa con CSHTML que le da una ventaja sobre MVC o formularios web, o viceversa?

Solo curiosidad por escuchar la opinión de la gente.


Ex Opinión del Desarrollador de Microsoft

Trabajé en un equipo central para el sitio web de MSDN. Ahora, utilizo la afeitadora c # para sitios de comercio electrónico con mi equipo de programación y enfocamos mucho en front-end jQuery con páginas de afeitado back-end c # y base de datos LINQ-Entity para que las páginas tengan tiempos de respuesta de 1 a 2 milisegundos incluso en bucles anidados con consultas y sin almacenamiento en caché de páginas. No utilizamos MVC, simplemente ASP.NET con páginas de rasurado mapeadas con el módulo de reescritura de URL para IIS 7, sin páginas ASPX ni con la programación de eventos del lado del servidor o ViewState. No tiene las capas adicionales (innecesarias) que MVC pone en las construcciones de código para la regex desafiada. Menos es más para nosotros. Es todo delgado y malo, pero doy accesorios a MVC por su capacidad de prueba, pero eso es todo.

Las páginas Razor no tienen ciclo de vida de evento como las páginas ASPX. Es solo una página solicitada. C # es un lenguaje excelente y Razor se sale de su camino para dejarlo hacer su trabajo. La escritura anónima con genéricos y linq hace que la vida sea tan fácil con las páginas c # y navaja. El uso de páginas Razor te ayudará a pensar y codificar más ligero.

Uno de los inconvenientes de Razor y MVC es que no existe una persistencia similar a ViewState. Necesitaba implementar una solución para eso, así que terminé escribiendo un complemento jQuery para eso aquí -> http://www.jasonsebring.com/dumbFormState que es un complemento soportado de almacenamiento sin conexión HTML 5 para el estado del formulario que está funcionando en todos los principales navegadores ahora. Es solo por estado de forma actualmente, pero puedes usar window.sessionStorage o window.localStorage muy simplemente para almacenar cualquier tipo de estado en las devoluciones de datos o incluso en las solicitudes de página, solo me molesté en hacer que autoguarde y espacio de nombres basado en URL y formar índice para no tienes que pensar en eso.


  1. ¡Todo está codificado por defecto! Esto es bastante grande

  2. Los ayudantes declarativos se pueden compilar, por lo que no es necesario hacer nada especial para compartirlos. Creo que reemplazarán los controles .ascx en cierta medida. Tienes que pasar por algunos aros para usar un control .ascx en otro proyecto.

  3. Puede hacer una sección requerida que es agradable.


El mayor beneficio es que el código es más sucinto. El editor VS también tendrá la compatibilidad con IntelliSense que algunos de los otros motores de vista no tienen.

Los Ayudantes de HTML declarativos también se ven muy bien ya que el uso de ayudantes HTML dentro del código C # me recuerda a los controles personalizados en ASP.NET. Creo que tomaron una página de parciales pero con el código en línea.

Así que algunos beneficios definitivos sobre el motor de vista asp.net.

Sin embargo, a diferencia del motor de visión, como una chispa:

Spark es aún más sucinto, puedes guardar los if y los loops dentro de una etiqueta html. El marcado todavía me parece más natural.

Puedes codificar parciales exactamente cómo harías una ayuda declarativa, simplemente pasarías las variables al parcial y tienes la misma cosa. Esto ha estado con chispa durante bastante tiempo.


Una de las ventajas es que las vistas Razor se pueden representar dentro de las pruebas unitarias, esto es algo que no fue posible con el renderizador anterior ASP.Net.

Desde el anuncio de ScottGu esto se enumera como uno de los objetivos de diseño:

Unidad comprobable: la implementación del nuevo motor de vista admitirá la capacidad de probar vistas de unidad (sin requerir un controlador o servidor web, y puede alojarse en cualquier proyecto de prueba de unidad, no se requiere un dominio de aplicación especial).