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)

Avalie esse artigo

Relevância
Estilo/Redação

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 mensagens dessa discussão
Comentários da comunidade

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

Receber mensagens dessa discussão

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

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.