BT

Lançado o ASP.NET MVC 3 Release Candidate

por Fernando Hamasaki de Amorim em 10 Nov 2010 |

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)

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT