ASP.NET MVC 5.1 – O que mudou?

Foi anunciado em 20/01/2014 o release do ASP.NET MVC 5.1 que chegou com boas novidades e atualizações, na mesma data o Visual Studio recebeu o Update 1, confira em detalhes.

ASP.NET MVC 5.1

Requerimentos de Software

Download

A release do ASP.NET MVC 5.1 foi liberada como um pacote disponível na galeria NuGet. Todos os pacotes sequem a especificação Semantic Versioning, por exemplo o ASP.NET MVC 5.1 RTM tem a seguinte versão: “5.1.0”.

Para facilitar mais você ainda pode utilizar o NuGet Package Manager Console com o seguinte comando:

Install-Package Microsoft.AspNet.Mvc -Version 5.1.0

Documentação

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

Novidades no ASP.NET MVC 5.1

Melhorias no Attribute routing

O Attribute Routing agora suporta restrições, permitindo o versionamento e header baseado na seleção da rota. Muitos aspectos de attribute routes podem agora ser customizados via a interface IDirectRouteFactory e a classe RouteFactoryAttribute.

Suporte a Enum nas views

  1. Novo helper @Html.EnumDropDownListFor() Pode ser usado como a maioria dos HTML helpers com a ressalva que a expressão precisa ser avaliada como um tipo de Enum ou um Nullable<T> onte T é um tipo de enun. Utilize EnumHelper.IsValidForEnumHelper() para verificar estes requerimentos.
  2.  

  3. Novo método EnumHelper.GetSelectList() qual retorna um IList<SelectListItem>.
    Isto é útil quando você precisa manipular uma select lista antes de chamá-la, por exemplo um @Html.DropDownListFor(), ou quando você desejar exibir os nomes que o @Html.EnumDropDownListFor() mostra.

O código a seguir demonstra como aplicar:

@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 conferir um exemplo completo aqui.

suporte a Bootstrap em editor templates

Agora é possível passar no EditorFor um atributo HTML como um objeto anônimo:

Exemplo:

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

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

Validações client-side para string e arrays agora são suportadas para as propriedades decoradas com os atributos MinLength e MaxLength.

Supporte ao contexto ‘this’ no Ajax não intrusivo

As funções de callback (OnBegin, OnComplete, OnFailure, OnSuccess) agora estão habilitadas a localizar o elemento da invocação através do contexto ‘this’. 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 Mudanças Significativas

Attribute Routing

Ambiguidades nas correspondências de attribute routing agora irão reportar um erro em vez de escolher a primeira correspondência.

Attribute Routes estão proibidos de usar o parâmetro {controller} e de usar o parâmetro {action} em rotas colocada em actions. O uso destes parâmetros muito provavelmente levará a gerar ambiguidades.

utilizar Scaffolding de MVC/Web API em um projeto com pacotes 5.1 resultará em pacotes 5.0 para aqueles que ainda não existem no projeto.

Atualizar para ASP.NET MVC 5.1 através dos pacotes NuGet não atualiza as ferramentas como Scaffolding ou o template de ASP.NET Web Application.

Eles usam uma versão anterior do ASP.NET (5.0.0.0). Como resultado o Scaffolding irá instalar os pacotes antigos (5.0.0.0) como pacotes requeridos se ainda não estiverem disponíveis em seu projeto. Entretanto o Scaffolding do Visual Studio 2013 RTM ou Update 1 não sobrescreve os últimos pacotes em seu projeto.

Se você usar Scaffolding após ter atualizados os pacotes em seu projeto para Web API 2.1 ou ASP.NET MVC 5.1, confira se as versões estão consistentes.

Syntax Highlighting para Razor Views no Visual Studio 2013

Se você atualizar para o ASP.NET MVC 5.1 RTM sem atualizar o Visual Studio 2013, você não conseguirá o suporte no editor para o syntax highlighting enquanto estiver editando as Razor Views, você precisará atualizar o Visual Studio 2013 para obter este suporte.

tipos renomeados

Alguns dos tipos (types) utilizados para a extensibilidade do attribute routing foram renomeados na versão do ASP.NET MVC 5.1 RTM.

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

Correções de Bugs

O time do ASP.NET realizou a correção de diversos bugs da versão anterior como parte deste release (ASP.NET MVC 5.1 RTM). Confira a lista completa de todos os bugs corrigidos (e outros ainda em andamento) aqui.


Estas são todas as novidades da versão ASP.NET MVC 5.1, lembre-se de atualizar a sua versão do Visual Studio 2013 para o melhor proveito das novidades.

Em breve publicarei um artigo sobre as novidades do ASP.NET WebAPI 2.1.

Referências

Até a próxima 😉

7 pensou em “ASP.NET MVC 5.1 – O que mudou?

  1. AO criar o projeto no Asp.Net MVC5, da esse erro, mas com a URL correta (http://localhost:5934/Home), FUNCIONA….
    Me ajuda.

    Erro de Servidor no Aplicativo ‘/’.

    Não é possível encontrar o recurso.

    Descrição: HTTP 404. O recurso que você está procurando (ou uma de suas dependências) não pôde ser removido, seu nome foi alterado ou está temporariamente indisponível. Examine o URL e certifique-se de que está digitado corretamente.

    URL solicitada: /Views/Home/Index.cshtml

    Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.0.30319.34212

    • Você provavelmente não tem o controller HOME,
      ou qualquer outro controller que faça referencia para a pagina inicial

Os comentários estão fechados.