Compartir a través de


Novedades de ASP.NET MVC 5.1

por Microsoft

En este tema se describen las novedades de ASP.NET Web MVC 5.1.

Requisitos de software

Descargar

Las características en tiempo de ejecución se publican como paquetes NuGet en la galería de NuGet. Todos los paquetes en tiempo de ejecución siguen la especificación de control de versiones semántico. El último paquete ASP.NET MVC 5.1 RTM tiene la siguiente versión: "5.1.2". Puede instalar o actualizar estos paquetes a través de NuGet. La versión también incluye los paquetes localizados correspondientes en NuGet.

Puede instalar o actualizar los paquetes NuGet publicados mediante la consola del Administrador de paquetes NuGet:

Install-Package Microsoft.AspNet.Mvc -Version 5.1.2

Documentación

Los tutoriales y otra información sobre ASP.NET MVC 5.1 RTM están disponibles en el sitio web de ASP.NET ( https://www.asp.net).

Nuevas características de ASP.NET MVC 5.1

Mejoras en el enrutamiento de atributos

El enrutamiento de atributos ahora admite restricciones, lo que permite el control de versiones y la selección de rutas basada en encabezados. Muchos aspectos de las rutas de atributo ahora se pueden personalizar a través de la interfaz IDirectRouteFactory y la clase RouteFactoryAttribute. El prefijo de ruta ahora es extensible mediante la interfaz IRoutePrefix y la clase RoutePrefixAttribute.

Compatibilidad con enumeración en vistas

  1. Nuevos métodos del asistente @Html.EnumDropDownListFor(). Se deben usar como la mayoría de los asistentes HTML con la advertencia de que la expresión debe evaluarse como un tipo enum o un Nullable<T> donde T es un tipo enum. Use EnumHelper.IsValidForEnumHelper() para comprobar estos requisitos.
  2. Nuevos métodos EnumHelper.GetSelectList() que devuelven IList<SelectListItem>. Esto resulta útil cuando necesita manipular una lista de selección antes de llamar, por ejemplo, @Html.DropDownListFor()o cuando desea mostrar los nombres que @Html.EnumDropDownListFor() muestra.

En el código siguiente se muestran estas API.

@if (EnumHelper.IsValidForEnumHelper(ViewData.ModelMetadata))
{
    @Html.EnumDropDownListFor(model => model, htmlAttributes: new { @class = "form-control" })
}
@if (EnumHelper.IsValidForEnumHelper(ViewData.ModelMetadata))
{
    foreach (SelectListItem item in EnumHelper.GetSelectList(ViewData.ModelMetadata,
(Enum)Model)) { … }
}

Puede ver un ejemplo completo aquí.

Compatibilidad de arranque con plantillas de editor

Ahora se permiten pasar atributos HTML en EditorFor como un objeto anónimo.

Por ejemplo:

@Html.EditorFor(model => model, new { htmlAttributes = new { @class = "form-control" }, })

Validación discreta para MinLengthAttribute y MaxLengthAttribute

Ahora se admitirá la validación del lado cliente para los tipos de cadena y matriz para las propiedades decoradas con los atributos MinLength y MaxLength.

Compatibilidad con el contexto "this" en Ajax discreto

Las funciones de devolución de llamada (OnBegin, OnComplete, OnFailure, OnSuccess) ahora podrán localizar el elemento que mediante el contexto this. Por ejemplo:

@Ajax.ActionLink("Click me", "AjaxAction", new AjaxOptions { UpdateTargetId = "foo", OnBegin = "OnClick" })

<script>
    function OnClick(jqXHR) {
        if ($(this).hasClass("foo")) {
            jqXHR.setRequestHeader("custom-header", "value");
        }
    }
</script>

Problemas conocidos y cambios importantes

Enrutamiento mediante atributos

Las ambigüedades en las coincidencias de enrutamiento de atributos ahora notificarán un error en lugar de elegir la primera coincidencia.

Las rutas de atributo tienen prohibido usar el parámetro {controller} y usar el parámetro {action} en las rutas realizadas en acciones. Es muy probable que los usos de estos parámetros produzcan ambigüedades.

Aplicar scaffolding MVC/Web API a un proyecto con paquetes 5.1 da como resultado paquetes 5.0 para los que aún no existen en el proyecto

La actualización de paquetes NuGet para ASP.NET MVC 5.1 RTM no actualiza las herramientas de Visual Studio, como ASP.NET scaffolding o la plantilla de proyecto de aplicación web de ASP.NET. Usan la versión anterior de los paquetes en tiempo de ejecución de ASP.NET (5.0.0.0). Como resultado, el scaffolding de ASP.NET instalará la versión anterior (5.0.0.0) de los paquetes necesarios, si aún no están disponibles en los proyectos. Sin embargo, el scaffolding de ASP.NET en Visual Studio 2013 RTM o Update 1 no sobrescribe los paquetes más recientes de los proyectos. Si usa el scaffolding de ASP.NET después de actualizar los paquetes de los proyectos a Web API 2.1 o ASP.NET MVC 5.1, asegúrese de que las versiones de la API web y ASP.NET MVC sean coherentes.

Resaltado de sintaxis para vistas de Razor en Visual Studio 2013

Si actualiza a ASP.NET MVC 5.1 RTM sin actualizar Visual Studio 2013, no obtendrá compatibilidad con el editor de Visual Studio para el resaltado de sintaxis mientras edita las vistas de Razor. Tendrá que actualizar Visual Studio 2013 para obtener este soporte.

Cambio de nombre de tipo

Algunos de los tipos usados para la extensibilidad de enrutamiento de atributos se cambian de nombre en 5.1 RTM.

Nombre de tipo antiguo (5.1 RC) Nuevo nombre de tipo (5.1 RTM)
IDirectRouteProvider IDirectRouteFactory
RouteProviderAttribute RouteFactoryAttribute
DirectRouteProviderContext DirectRouteFactoryContext