Novidades no ASP.NET MVC 5.1

pela Microsoft

Este tópico descreve as novidades do ASP.NET Web MVC 5.1.

Requisitos de software

Baixar

Os recursos de runtime são lançados como pacotes NuGet na galeria do NuGet. Todos os pacotes de runtime seguem a especificação de Controle de Versão Semântico . A última ASP.NET pacote RTM MVC 5.1 tem a seguinte versão: "5.1.2". Você pode instalar ou atualizar esses pacotes por meio do NuGet. A versão também inclui pacotes localizados correspondentes no NuGet.

Você pode instalar ou atualizar para os pacotes NuGet lançados usando o Console do Gerenciador de Pacotes NuGet:

Install-Package Microsoft.AspNet.Mvc -Version 5.1.2

Documentação

Tutoriais e outras informações sobre ASP.NET MVC 5.1 RTM estão disponíveis no site do ASP.NET ( https://www.asp.net).

Novos recursos no ASP.NET MVC 5.1

Melhorias de roteamento de atributo

O roteamento de atributo agora dá suporte a restrições, habilitando o controle de versão e a seleção de rota baseada em cabeçalho. Muitos aspectos das rotas de atributo agora são personalizáveis por meio da interface e RouteFactoryAttribute da IDirectRouteFactory classe. O prefixo de rota agora é extensível por meio da IRoutePrefix interface e RoutePrefixAttribute da classe .

Suporte de enumeração em exibições

  1. Novos @Html.EnumDropDownListFor() métodos auxiliares. Eles devem ser usados como a maioria dos auxiliares HTML com a ressalva de que a expressão deve ser avaliada como um tipo de enumeração ou um T> anulável< em que T é um tipo de enumeração. Use EnumHelper.IsValidForEnumHelper() para marcar esses requisitos.
  2. Novos EnumHelper.GetSelectList() métodos que retornam um IList<SelectListItem>. Isso é útil quando você precisa manipular uma lista de seleção antes de chamar, por exemplo, @Html.DropDownListFor()ou quando você deseja exibir os nomes que @Html.EnumDropDownListFor() são exibidos.

O código a seguir mostra essas APIs.

@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)) { … }
}

Você pode ver um exemplo completo aqui.

Suporte de inicialização para modelos de editor

Agora, permitimos a passagem de atributos HTML no EditorFor como um objeto anônimo.

Por exemplo:

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

Validação não discreta para MinLengthAttribute e MaxLengthAttribute

A validação do lado do cliente para tipos de cadeia de caracteres e matriz agora terá suporte para propriedades decoradas com os atributos MinLength e MaxLength .

Suporte ao contexto 'this' no Ajax discreto

As funções de retorno de chamada (OnBegin, OnComplete, OnFailure, OnSuccess) agora poderão localizar o elemento invocador por meio do this contexto. Por exemplo:

@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 conhecidos e alterações interruptivas

Roteamento de atributo

Ambiguidades em correspondências de roteamento de atributos agora relatarão um erro em vez de escolher a primeira correspondência.

As rotas de atributo são proibidas de usar o {controller} parâmetro e de usar o {action} parâmetro em rotas colocadas em ações. O uso desses parâmetros provavelmente levaria a ambiguidades.

O scaffolding MVC/API Web em um projeto com pacotes 5.1 resulta em pacotes 5.0 para os que ainda não existem no projeto

A atualização de pacotes NuGet para ASP.NET MVC 5.1 RTM não atualiza as ferramentas do Visual Studio, como ASP.NET scaffolding ou o modelo de projeto ASP.NET Aplicativo Web. Eles usam a versão anterior do ASP.NET pacotes de runtime (5.0.0.0). Como resultado, o ASP.NET scaffolding instalará a versão anterior (5.0.0.0) dos pacotes necessários, se eles ainda não estiverem disponíveis em seus projetos. No entanto, o scaffolding ASP.NET em Visual Studio 2013 RTM ou Atualização 1 não substitui os pacotes mais recentes em seus projetos. Se você usar ASP.NET scaffolding depois de atualizar os pacotes de seus projetos para a API Web 2.1 ou ASP.NET MVC 5.1, verifique se as versões da API Web e ASP.NET MVC são consistentes.

Realce de sintaxe para exibições razor em Visual Studio 2013

Se você atualizar para ASP.NET MVC 5.1 RTM sem atualizar Visual Studio 2013, não obterá suporte do editor do Visual Studio para realce de sintaxe ao editar as exibições do Razor. Você precisará atualizar Visual Studio 2013 para obter esse suporte.

Digite Renomeações

Alguns dos tipos usados para extensibilidade de roteamento de atributo são renomeados em 5.1 RTM.

Nome do tipo antigo (5.1 RC) Novo Nome do Tipo (5.1 RTM)
IDirectRouteProvider IDirectRouteFactory
RouteProviderAttribute RouteFactoryAttribute
DirectRouteProviderContext DirectRouteFactoryContext