Acaba de ser lançada a Versão 3 Release Candidate do ASP.NET MVC, o framework Model-View-Controller de .NET, trazendo uma série de novos recursos, melhorias em ferramentas e correções de bugs.
Vamos ver alguns recursos inclusos no ASP.NET MVC 3 RC.
NuGet Package Manager
Agora o NuGet, anteriormente chamado de NuPack, vem instalado automaticamente com o ASP.NET MVC 3 RC. O NuGet (um projeto de código aberto) é um gerenciador de pacotes que auxilia a procurar, instalar e usar bibliotecas .NET em seus projetos.
Intellisense para Razor no Visual Studio
Razor (cshtml) é uma nova view engine do ASP.NET MVC que visa otimizar a geração de HTML, simplificando a escrita de código da view. Agora no ASP.NET MVC 3 RC há suporte para colorização e intellisense de views do Razor para Visual Studio e Visual Web Developer Express. Quando você está editando uma view do Razor, o intellisense funciona com HTML, C#, VB, JavaScript e CSS.
Propriedade Model do Razor é dinâmica por padrão
Se você não especificar a diretiva @model nas suas views de Razor, o propriedade Model na página agora será por padrão do tipo dynamic ao invés de object.
JavaScript não-obstrutivo
AJAX e validações no ASP.NET MVC agora são, por padrão, não-obstrutivos. Isto torna o HTML muito mais limpo, usando a convenção "data-" do HTML 5 para a separação de comportamento.
Validação no lado do cliente habilitada por padrão
A validação no lado do cliente agora é habilitada por padrão no ASP.NET MVC 3 RC (usando a abordagem não-obstrutiva). Essa validação também agora usa por padrão o jQuery Validation Plugin.
Request Validation granularizado
O novo atributo SkipRequestValidationAttribute desabilita request validation para propriedades específicas nos modelos. Isso é útil para cenários onde você quer permitir o envio de conteúdo em HTML em alguma propriedade do modelo e quer manter a proteção contra Cross-site scripting (XSS) no restante do modelo.
public class BlogPost { public int Id {get; set;} public string Title {get; set;} [SkipRequestValidation] public string Content {get; set;} }
Novos atributos de validação
- CompareAttribute: permite comparar o valor de duas propriedades diferentes no modelo.
public class User { [Required] public string Password { get; set; } [Required, Compare("Password")] public string ComparePassword { get; set; } }
- RemoteAttribute: usa a validação remota do jQuery Validation Plugin, que possibilita a validação no lado do cliente chamar um método no lado do servidor que executa a lógica de validação.
public class User { [Remote("UserNameAvailable", "Users")] public string UserName { get; set; } } public class UsersController { public bool UserNameAvailable(string username) { return !MyRepository.UserNameExists(username); } }
Sessionless Controllers
O novo atributo ControllerSessionStateAttribute, que recebe um dos valores da enumeração SessionStateBehavior, lhe dá mais controle sobre o comportamento de sessão nos controllers.
[ControllerSessionState(SessionStateBehavior.Disabled)] public class CoolController : Controller { public ActionResult Index() { object o = Session["Key"]; // Causes an exception. } }
Novas sobrecargas para os métodos LabelFor e LabelForModel
Agora é possível também informar um texto para o label nos métodos LabelFor e LabelForModel.
@Html.LabelFor(m => m.PropertyName, "Label Text"); @Html.LabelForModel("Label Text");
Output Caching para ações filhas
O atributo OutputCacheAttribute suporta cacheamento para ações filhas que são chamadas usando os métodos de ajuda Html.RenderAction ou Html.Action.
Hi there. The uncached time is: @DateTime.Now The cached time is: @Html.Action("GetDate") [OutputCache(Duration = 100, VaryByParam = "none")] public string GetDate() { return DateTime.Now.ToString(); }
Melhorias na caixa de diálogo "New Project"
Quando você cria um novo projeto, a caixa de diálogo "New Project" deixa você escolher a view engine, bem como o tipo de projeto ASP.NET MVC.
Melhorias na caixa de diálogo "Add View"
Quando você adiciona uma view tipada, a caixa de diálogo "Add View" agora não mostra mais tipos não associados à view. Além disso, a lista é ordenada pelo nome da classe e não mais pelo nome da classe com todos seus namespaces.
Para baixar o ASP.NET MVC 3 Release Candidate, utilize esse link.
Mais informações e exemplos:
- Announcing the ASP.NET MVC 3 Release Candidate (Scott Guthrie)
- ASP.NET MVC 3 Release Candidate (Phil Haack)