ASP.NET MVC 3es un entorno para la construcción de aplicaciones web escalables basadas en estándares usando patrones de diseño bien establecidas y el poder de ASP.NET y. NET Framework basándose en ASP.NET MVC 1 y 2 y la adición de grandes características que simplifican el código
Se instala de lado a lado con ASP.NET MVC 2, y es gratuito ( se puede descargar el instalador aquí).
Las características principales
- Extensible integrada del sistema de andamiaje a través NuGet
- HTML 5 plantillas de proyecto habilitados
- Vistas Expresivo, incluyendo el nuevo motor de vistas Razor
- Ganchos potentes con la inyección de dependencias y Acción Global Filtros
- Soporte JavaScript rico con discreta JavaScript, jQuery Validation y JSON vinculante
Este post deberia proporcionar una visión general de muchas de las nuevas características que se incluyen en esta versión, organizada en las características ya citadas
Andamios extensibles con la integración MvcScaffold
El nuevo sistema de andamios hace más fácil para recoger y empezar a utilizar de manera productiva si eres completamente nuevo para el marco, y para automatizar tareas comunes de desarrollo si tienes experiencia y ya sabes lo que estás haciendo.
Esto es apoyado por el nuevo paquete de andamios NuGet llamado MvcScaffolding. El término “Andamios” es utilizado por muchas tecnologías de software en el sentido de “generar rápidamente un esquema básico de software que a continuación, puede editar y personalizar”. El paquete de andamios que estamos creando para ASP.NET MVC es muy beneficioso en varios escenarios:
- Si estás aprendiendo ASP.NET MVC, por primera vez, ya que le ofrece una manera rápida de conseguir algunos, el código de trabajo útil, que luego se puede editar y adaptar de acuerdo a sus necesidades. Esto le ahorra el trauma de ver una página en blanco y que no tiene idea por dónde empezar!
- Si conoces ASP.NET MVC bien y ahora está explorando una nueva tecnología add-on como un mapeador objeto-relacional, un motor de vista, una biblioteca de pruebas, etc, porque el creador de esa tecnología puede tener también creó un paquete de andamios para ello.
- Si su trabajo implica la creación repetida clases o archivos de cierta clase similares, ya que puede crear andamios personalizadas que accesorios de la prueba de salida, scripts de implementación, o cualquier otra cosa que necesiten. Todo el mundo en su equipo puede utilizar sus andamios personalizados, también.
Otras características en MvcScaffolding incluyen:
- Soporte para C # y VB proyectos
- El apoyo a la Navaja y motores de vista ASPX
- Soporta andamios en áreas ASP.NET MVC y el uso de la vista personalizada layouts / maestros
- Puede personalizar fácilmente la salida mediante la edición de plantillas de T4
- Puede agregar completamente nuevas andamios utilizando la lógica PowerShell personalizada y plantillas T4 personalizado.Estos (y los parámetros personalizados que les has dado) aparecen automáticamente en la lista para rellenar la ficha de la consola.
- Usted puede conseguir los paquetes que contienen NuGet andamios adicionales para las diferentes tecnologías (por ejemplo, hay una prueba de concepto de una para LINQ to SQL ahora) y mezclar y combinar
El ASP.NET MVC 3 Herramientas actualización incluye un gran apoyo de Visual Studio para este sistema de andamios, tales como:
- Agregar controlador de diálogo es ahora compatible con andamios automática llena de crear, leer, actualizar y eliminar acciones del controlador y las vistas correspondientes. Por defecto, este andamiaje código de acceso a datos utilizando código de EF Primera.
- Agregar controlador de diálogo apoya andamios extensibles a través de paquetes NuGet como MvcScaffolding. Esto permite conectar los andamios personalizados en el cuadro de diálogo que le permitirá crear andamios para otras tecnologías de acceso a datos como NHibernate o incluso JET con ODBCDirect si usted está tan inclinado!
HTML 5 Plantillas de proyecto
El cuadro de diálogo Nuevo proyecto incluye una casilla de verificación Habilitar HTML 5 versiones de plantillas de proyecto. Estas plantillas apalancamiento Modernizr 1.7 para proporcionar soporte de compatibilidad para HTML 5 y CSS 3 en los navegadores de nivel inferior.
El Razor View Engine
ASP.NET MVC 3 viene con un nuevo motor de vista llamada Razor que ofrece los siguientes beneficios:
- Sintaxis Razor es limpia y concisa, lo que requiere un número mínimo de pulsaciones de teclas.
- Razor es fácil de aprender, en parte debido a que está basado en las lenguas existentes, como C # y Visual Basic.
- Visual Studio incluye IntelliSense y colorización código para la sintaxis Razor.
- Vistas Razor pueden ser unidad probada sin necesidad de que se ejecuta la aplicación o iniciar un servidor web.
Algunas de las nuevas características de afeitar son las siguientes:
@model
sintaxis para especificar el tipo que se pasa a la vista.@* *@
sintaxis de comentario.- La capacidad de especificar los valores predeterminados (como
layoutpage
) una vez para un sitio completo. - El
Html.Raw
método para mostrar texto sin HTML-codificarlo. - Soporte para compartir código entre múltiples puntos de vista (_viewstart.cshtml o archivos _viewstart.vbhtml).
Razor también incluye nuevos ayudantes HTML , tales como las siguientes:
Chart
. Representa un gráfico, que ofrece las mismas características que el control de gráfico en ASP.NET 4.WebGrid
. Representa una cuadrícula de datos, con la paginación y la funcionalidad de ordenación.Crypto
. Utiliza algoritmos de hash para crear contraseñas correctamente salados y hash.WebImage
. Representa una imagen.WebMail
. Envía un mensaje de correo electrónico.
Soporte para múltiples View Motores
El cuadro de diálogo Agregar vista en ASP.NET MVC 3 le permite elegir el motor de vista que desea trabajar, y el cuadro de diálogo Nuevo proyecto permite especificar el motor de la vista por defecto para un proyecto. Usted puede elegir el motor de vista de formularios Web Forms (ASPX), Maquinilla de afeitar, o un motor de vista de código abierto, como Spark , NHaml o NDjango .
Las mejoras del controlador
Acción Global Filtros
A veces se desea realizar la lógica, ya sea antes un método de acción se ejecuta o después de un método de acción se ejecuta. Para apoyar esto, ASP.NET MVC 2 proporciona filtros de acción. Filtros de acción son los atributos personalizados que proporcionan un medio declarativas para añadir pre-acción y el comportamiento posterior a la acción de los métodos de acción del controlador específicos. Sin embargo, en algunos casos, es posible que desee especificar pre-acción o comportamiento posterior a la acción que se aplica a todos los métodos de acción. MVC 3 permite especificar filtros globales mediante su inclusión en el GlobalFilters
colección.
Nuevo “ViewBag” Propiedad
MVC 2 controladores admiten una ViewData
propiedad que le permite pasar datos a una plantilla de vista usando un enlace en tiempo de API diccionario. En MVC 3, también se puede utilizar la sintaxis un poco más sencilla con el ViewBag
propiedad para lograr el mismo propósito. Por ejemplo, en lugar de escribir ViewData["Message"]="text"
, puede escribir ViewBag.Message="text"
. No es necesario para definir las clases de tipo fuerte para utilizar la ViewBag
propiedad. Debido a que es una propiedad dinámica, en su lugar puede simplemente obtener o establecer propiedades y va a resolverlos de forma dinámica en tiempo de ejecución. Internamente, ViewBag
propiedades se almacenan como pares de nombre / valor en el ViewData
diccionario. (Nota: en la mayoría de las versiones preliminares de MVC 3, el ViewBag
propiedad fue nombrado el ViewModel
propiedad.)
Nuevos tipos “ActionResult”
Los siguientes ActionResult
tipos y los correspondientes métodos auxiliares son nuevas o mejoradas en MVC 3:
- HttpNotFoundResult . Devuelve un código de estado HTTP 404 al cliente.
- RedirectResult . Devuelve una redirección temporal (HTTP 302 código de estado) o una redirección permanente (HTTP 301 código de estado), dependiendo de un parámetro booleano. Junto con este cambio, el controlador de clase ahora tiene tres métodos para realizar las redirecciones permanentes:
RedirectPermanent
,RedirectToRoutePermanent
yRedirectToActionPermanent
. Estos métodos devuelven una instancia deRedirectResult
con laPermanent
propiedad establecida entrue
. - HttpStatusCodeResult . Devuelve un código de estado HTTP especificado por el usuario.
JavaScript y Mejoras Ajax
Por defecto, el Ajax y ayudantes de validación en MVC 3 utilizan un enfoque discreto JavaScript. JavaScript no obstructivo evita inyectando inline JavaScript en páginas HTML. Esto hace que el HTML más pequeño y menos desordenada, y hace que sea más fácil que cambiar o personalizar bibliotecas JavaScript. Ayudantes de validación en MVC 3 también utilizan el jQueryValidate
plugins por defecto. Si quieres MVC 2 comportamiento, puede desactivar JavaScript discreto usando un ajuste del archivo web.config.
La validación del lado del cliente habilitado de manera predeterminada
En versiones anteriores de MVC, es necesario llamar explícitamente al Html.EnableClientValidation
método desde un punto de vista con el fin de permitir la validación del lado del cliente. En MVC 3 esto ya no es necesario porque la validación del lado del cliente está habilitada de forma predeterminada. (Se puede desactivar esto usando una configuración en el archivo web.config.)
Para la validación del lado del cliente para trabajar, usted todavía tiene que hacer referencia a las bibliotecas de jQuery y jQuery validación apropiados en su sitio. Puede organizar las bibliotecas en su propio servidor o hacer referencia a ellos desde una red de distribución de contenidos (CDN) como los CDN de Microsoft o Google.
Validador remoto
ASP.NET MVC 3 es compatible con el nuevo RemoteAttribute clase que le permite tomar ventaja del soporte de validación remota el jQuery validación de plug-in. Esto permite a la biblioteca de validación en el cliente para llamar automáticamente un método personalizado que se define en el servidor con el fin de realizar la lógica de validación que se pueda hacer del lado del servidor.
En el siguiente ejemplo, la Remote
atributo especifica que la validación del cliente llamará a una acción llamada UserNameAvailable
en elUsersController
clase con el fin de validar el UserName
de campo.
Clase de usuario pública { [Remoto ("Usuarios" "UserNameAvailable",)] Nombre de usuario public string {get; set;} }
El siguiente ejemplo muestra el controlador correspondiente.
public class UsersController { UserNameAvailable public bool (string nombre de usuario) { if (MyRepository.UserNameExists (nombre de usuario)) { volver "false"; } volver "true"; } }
JSON Compatibilidad con enlaces
ASP.NET MVC 3 incluye compatibilidad con el enlace integrado JSON que permite métodos de acción para recibir datos JSON codificada y modelo-se unen a los parámetros de método de acción. Esta capacidad es útil en escenarios de plantillas de cliente y el enlace de datos.(Plantillas de cliente que permiten dar formato y mostrar un solo dato o conjunto de elementos de datos mediante el uso de plantillas que se ejecutan en el cliente.) MVC 3 le permite conectar fácilmente plantillas de cliente con métodos de acción en el servidor que envía y recibe datos JSON.
Mejoras del Modelo Validación
“DataAnnotations” Atributos de metadatos
ASP.NET MVC 3 es compatible con DataAnnotations
atributos de metadatos, como DisplayAttribute
.
Clase “ValidationAttribute”
El ValidationAttribute
clase mejoró en el. NET Framework 4 para apoyar una nueva IsValid
sobrecarga que proporciona más información sobre el contexto de validación actual, como lo está siendo validada objeto. Esto permite a los más ricos escenarios donde se puede validar el valor actual sobre la base de otra propiedad del modelo. Por ejemplo, el nuevo CompareAttribute
atributo le permite comparar los valores de dos propiedades de un modelo. En el siguiente ejemplo, el ComparePassword
propiedad debe coincidir con laPassword
de campo con el fin de ser válida.
Clase de usuario pública { [Obligatorio] public String Contraseña {get; set;} [Obligatorio, Compara ("Password")] ComparePassword public string {get; set;} }
Interfaces de validación
El IValidatableObject interfaz le permite realizar la validación a nivel de modelo, y que le permite ofrecer a los mensajes de error de validación que son específicos para el estado de todo el modelo, o entre dos propiedades dentro del modelo. MVC 3 ahora recupera los errores de laIValidatableObject
interfaz al enlazar el modelo y banderas o resalta automáticamente afectada campos dentro de una vista con los helpers de formularios incorporados en HTML.
El IClientValidatable interfaz permite ASP.NET MVC para descubrir en tiempo de ejecución si un validador tiene soporte para la validación del cliente. Esta interfaz ha sido diseñado de modo que puede ser integrado con una variedad de marcos de validación.
Para obtener más información acerca de las interfaces de validación, consulte la sección Validación del Modelo Mejoras de MVC 3 Vista Previa entrada en el blog de Scott Guthrie . (Sin embargo, tenga en cuenta que la referencia a “IValidateObject” en el blog debe ser “IValidatableObject”.)
Mejoras de Dependency Injection
ASP.NET MVC 3 ofrece un mejor soporte para la aplicación de la inyección de dependencias (DI) y para la integración con la inyección de dependencia o Inversión de Control contenedores (COI). Apoyo a la DI se ha añadido en las siguientes áreas:
- Controladores (registro y la inyección de las fábricas de controlador, la inyección de los controladores).
- Vistas (registro y la inyección de motores de vista, la inyección de dependencias en las páginas de vista).
- Filtros de acción (localización y la inyección de filtros).
- Aglutinantes modelo (que registran y se inyectan).
- Proveedores de validación del modelo (que registran y se inyectan).
- Los proveedores de metadatos de modelo (que registran y se inyectan).
- Proveedores de precio (que registran y se inyectan).
MVC 3 es compatible con la Common Servicio de Busqueda biblioteca y cualquier contenedor DI que apoya de esa bibliotecaIServiceLocator
interfaz. También permite una nueva IDependencyResolver
interfaz que hace que sea más fácil la integración de marcos DI.
Otras características nuevas
Integración NuGet
ASP.NET MVC 3 se instala automáticamente y permite NuGet como parte de su configuración. NuGet es un gestor de paquetes de código abierto gratuito que hace que sea fácil encontrar, instalar y utilizar. NET bibliotecas y herramientas en sus proyectos. Funciona con todos los tipos de proyecto de Visual Studio (incluidas las de formularios Web Forms de ASP.NET y ASP.NET MVC).
NuGet permite a los desarrolladores que mantienen los proyectos de código abierto (por ejemplo, proyectos como Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor, RhinoMocks y Elmah) para empaquetar sus bibliotecas y registrarlos en una galería en línea. Es entonces fácil para. NET los desarrolladores que desean utilizar una de estas bibliotecas para encontrar el paquete e instalarlo en proyectos en los que están trabajando.
Con el ASP.NET 3 Update de herramientas, plantillas de proyecto incluyen bibliotecas preinstaladas paquetes NuGet de JavaScript, por lo que se pueden actualizar a través de NuGet. Entity Framework Code First está también pre-instalado como un paquete NuGet.
Parcial de páginas caché de resultados
ASP.NET MVC ha apoyado la caché de resultados de las respuestas a toda página desde la versión 1. MVC 3 también soporta parcial de la página de caché de salida, lo que le permite almacenar en caché fácilmente regiones o fragmentos de una respuesta.
Control granular sobre la validación de solicitud
ASP.NET MVC ha incorporado en la validación de las solicitudes que ayuda automáticamente a proteger contra XSS y ataques de inyección HTML. Sin embargo, a veces usted quiere deshabilitar explícitamente la validación de solicitudes, por ejemplo, si desea que los usuarios publican contenido HTML (por ejemplo, en las entradas de blog o contenidos CMS). Ahora puede agregar un AllowHtml atributo a modelos o modelos de vista para desactivar la validación de solicitudes en función de cada propiedad durante el enlace de modelo.
Extensible Cuadro de diálogo “Nuevo proyecto”
En ASP.NET MVC 3 puede agregar plantillas de proyecto, motores de vista y marcos de proyectos de prueba unitaria para el cuadro de diálogo Nuevo proyecto.
Mejoras Andamios Plantilla
ASP.NET MVC 3 plantillas de andamios hacen un mejor trabajo de identificación de propiedades primarias clave en los modelos y manejarlos apropiadamente que en versiones anteriores de MVC. (Por ejemplo, las plantillas de andamios ahora se aseguran de que la clave principal no se andamiaje como un campo de formulario editable.)
Por defecto, los andamios de crear y editar ahora utilizan la Html.EditorFor
helper en lugar de la Html.TextBoxFor
ayudante. Esto mejora el soporte para los metadatos sobre el modelo en forma de atributos de anotación de datos cuando el cuadro de diálogo Agregar vista genera una vista.
Nuevas sobrecargas para “Html.LabelFor” y “Html.LabelForModel”
Nuevos sobrecargas del método se han añadido para los LabelFor
y LabelForModel
métodos auxiliares. Las nuevas sobrecargas que permiten especificar o anular el texto de la etiqueta.
Auxiliar del Controlador sin sesión
En ASP.NET MVC 3 se puede indicar si desea que una clase de controlador para utilizar el estado de sesión, y si es así, si el estado de sesión se debe leer / escribir o de sólo lectura
Nueva Clase “AdditionalMetadataAttribute”
Puede utilizar los AdditionalMetadata atribuyen a poblar la ModelMetadata.AdditionalValues
diccionario para un modelo de propiedad.Por ejemplo, si un modelo de vista tiene una propiedad que se debe mostrar sólo a un administrador, puede anotar que la propiedad como se muestra en el siguiente ejemplo:
public class ProductViewModel { [AdditionalMetadata ("AdminOnly", true)] RefundCode public string {get; set;} }
Estos metadatos se pondrá a disposición de cualquier plantilla de visualización o el editor cuando se representa un modelo de descripción del artículo. Es hasta usted para interpretar la información de metadatos.
AccountController mejoras
El AccountController en la plantilla de proyecto de Internet se ha mejorado mucho.
Nueva plantilla de proyecto Intranet
Una nueva plantilla de Intranet Proyecto está incluido, que permite la autenticación de Windows y elimina la AccountController.
Fuente aqui