Razor View Engine
Razor es motor del lado del servidor Web, que interpreta instrucciones que siguen una sintaxis y forma especifica para ese motor; estas instrucciones se colocan en ASP.NET Web Pages y ASP.NET MVC 3 y 4 y es la alternativa al motor de Web Forms, que se utilizaba en MVC 1 y 2.
Su sintaxis es simple y acompaña a páginas que utilizan HTML. EL código es interpretado del lado del servidor antes de que se envíe la página Web al explorador del cliente. Puede generar contenido para el cliente y mandarlo junto con el código HTML estático.
Las páginas de Web Forms se centran en controles de servidor web que generan código HTML automáticamente y usan presentan un efecto parecido a la programación por eventos. Razor trabaja de forma más directa con HTML y el cliente produce virtualmente todo el HTML necesario. Esto hace más ligeras a las páginas Web.
Las paginas web que hacen uso de Razor tienen extención .cshtml o vbhtml. El servidor lo reconoce y usa el motor Razor, ejecuta las instrucciones y envía el resultado al explorador.
El siguiente es un ejemplo de código Razor, el símbolo @ indica el inicio de código Razor
<ul>
@foreach(var item in unaColeccion)
{
<li>@item</li>
}
</ul>
- Razor fue diseñado específicamente como un motor de sintaxis para vista. Este tiene como enfoque principal: código enfocado a plantillas para la generación de HTML. Y como se puede ver en el código anterior, es mucho más fácil escribir código Razor.
- No es un nuevo lenguaje, pues permite usar la sintaxis conocida de C# o VB.
- Puede utilizarse cualquier editor de texto.
- En el caso de usar Visual Studio se tiene la capacidad de usar IntelliSense.
Mejora en la validación
La validación es una parte importante del desarrollo de aplicaciones, pero no es algo simple, MVC 3 y 4 extienden los escenarios que previa MVC 2.
MVC 2 fue compilado con .NET 3.5, así que no soportaba la validación por medio de los atributos de DataAnnotations; este se encuentra en el espacio de nombres System.ComponentModel.Annotations para especificar la validación de campos individuales en el modelo de datos, como por ejemplo campos obligatorios, manejo de intervalos; y permite hacer comprobaciones del lado del cliente y de servidor sin programar código adicional.
Puede ser usado con Entity Data Model(EDM), LINQ para SQL, etc. Permite también crear atributos de validación personalizados, vea las referencias para más detalle.
Uso de ValidationAttribute, permite crear validación personalizado creando metadatos en el modelo de datos para validación. Los datos dinámicos de ASP.NET permiten personalizar y extender la validación de datos al nivel de la capa de datos.
Unobtrusive JavaScript (JavaScript no obstruyente)
Una de las criterios en el desarrollo de aplicaciones web, dicta que no se introduzcan eventos dentro de los elementos HTML. Los validadores lo detectan y avisan de anormalidades. Un ejemplo de código obstruyente y que no debería ser utilizado sería el siguiente:
<div onclick ="javascript:alert('Ejemplo de JavaScript obstruyente');">Prueba de JavaScript</div>
ASP.NET MVC maneja el concepto de JavaScript no obstruyente y la validación en el cliente. Se configura en el archivo web.config dentro de la carpeta appSettings
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
Se crean atributos dentro de la etiqueta HTML, usando: jquery.validate.unobtrusive y jquery.unobtruisive-ajax.
La idea es que el código JavaScript siempre se encuentre en archivos externos, se que se incluyen en la vista, nunca se escribe de forma directa en la vista. Se debe independizar el código HTML de JavaScript.
MVC 3 soporta JavaScript no osbtruyente de dos formas.
- Auxiliares Ajax, como Ajax.ActionLink y Ajax.BeginForm, dan un marcado limpio para la etiqueta FORM , conectan el comportamiento extendiendo atributos (data attributes) y JQuery
- Validación Ajax sin emición de reglas de validación como un bloque de de datos JSON, en lugar de escribir las reglas de validación utilizando los atributos de datos.
Validación JQuery
MVC 2 se expande con JQuery usando Microsoft Ajax para validación. MVC 3 completa la transición usando JQuery para el soporte de Ajax convirtiendo el soporte de la validación para correr el plugin JQuery Validation. Al usar esta estrategia de validación se hace extremadamente flexible, beneficiándose de la enorme comunidad JQuery.
La validación del lado del cliente se activa de forma predeterminada para proyectos MVC 3 y 4 y se puede activar en todo el sitio con el archivo web.config o por el código global.asax para proyectos superiores.
Soporte a JSON
JSON es usado por JavaScript para la representación de datos, que actualmente es utilizado para almacenar e intercambiar datos entre aplicaciones y así mismo es una alternativa a XML. Es ligero pues es texto solamente,independiente del lenguaje, es auto-descriptivo y al ser texto puede ser leído por cualquier lenguaje.
Es idéntico en el la forma en que se crean los objetos en JavaScript. En vez de usar un parser (analizadores, como lo hace XML), un programa JavaScxript puede usar funciones JavaScript para convertir datos JSON en objetos propios de JavaScript.
Es utilizado en aplicaciones AJAX y es más rápido que XML, XML usa un documento y DOM para iterar sobre el documento, extrae los valores y los almacena en variable. Usando JSON, los datos entran por cadena y se utiliza una función para convertirlos en objetos de JavaScript.
Por medio de JsonValueProviderFactory que contiene métodos para enviar y recibir texto con formato JSON como parámetros de métodos, es como se da soporte a JSON por parte de ASP.NET MVC 3 y 4.
Solución de dependencias
MVC 3 introduce un nuevo concepto llamado dependecy resolver, que simplifica enormemente el uso de inyección de dependencias en sus aplicaciones para simplificar la inyección de dependencias en las aplicaciones. Esto hace fácil desacoplar los componentes de las aplicaciones, haciendo facilitando la configuración y las pruebas.
Se agrego soporte para los siguientes escenarios:
- Controllers(inyección de controladores, registro e inyección de fabrica de controladores)
Un controlador es una clase que hereda de la clase Controller, esta clase no tiene un constructor predeterminado por omisión, es decir sin parámetros, definido. En MVC se tiene algo conocido como factoría de controladores, cuya función es inicializar los controladores. Para esto se debe crear una nueva clase que implemente la interfaz IControllerFactory. Estas clases responden a la solicitud de usuario llamando a las Views (o vistas) con las que el usuario interactua.
- Views (registro e inyección de motores de vistas, inyección de dependencias dentro de paginas "vista"), que son el elemento con los que el usuario interactua.
- Action filters (localización e inyección de filtros)
Se usan los filtros de acción para tareas de registro, autenticación o almacenamiento en caché de resultados, entre otras. Se implementa como un atributo que hereda de la clase ActionFilterAttribute.
- Model binders (registro e inyección)
- Model validation providers (registro e inyección)
- Model metadata providers (registro e inyección)
- Value providers (registro e inyección)
Estos son temas de gran tamaño que requieren un tratamiento profundo.
Global Action Filters (Filtros de Acción Global)
En ASP.NET MVC los controladores (mediante sis métodos de acción) se encargan de la interacción con los usuarios y el sistema. Las peticiones al servidor mediante la interpretacion de ruts (UrlRoutingModule) se analiza la url y la redirecciona al controlador y método de acción adecuado, que estiona la petición y regresa el resultado.
Estos filtros permiten por medio de atributos agregar comportamientos previos y posteriores a los métodos de acción de los controladores. Y se presentan como atributos de la clase abstracta FilterAttribute.
Referencias:
Cómo: Validar los datos del modelo mediante los atributos de DataAnnotations: https://msdn.microsoft.com/es-mx/library/ee256141(v=vs.100).aspx
Cómo: Personalizar la validación de campos de datos en el modelo de datos mediante atributos personalizados: https://msdn.microsoft.com/es-es/library/cc668224(v=vs.100).aspx
Validaciones con DataAnnotations: http://puntonetalpunto.blogspot.mx/2013/10/validaciones-con-dataannotations.html
JSON: http://www.w3schools.com/json/json_syntax.asp
Tutorial: Crear un proyecto de MVC básico con pruebas unitarias en Visual Studio: https://msdn.microsoft.com/es-mx/library/dd410597(v=vs.100).aspx
Cómo: Crear un filtro de acción personalizado: https://msdn.microsoft.com/es-mx/library/dd410056(v=vs.100).aspx
http://josemartinez.info/2015/05/11/filtros-en-asp-net-mvc/: http://josemartinez.info/2015/05/11/filtros-en-asp-net-mvc/
No hay comentarios.:
Publicar un comentario