Artigo no estilo: Curso

Do que trata o artigo

Neste segundo artigo veremos novidades relacionadas à utilização de helpers, criação de gráficos, trabalho com imagens, segurança, exibição de dados, além de verificarmos as novidades e os novos atributos de validação.

Para que serve

Conhecendo os novos web helpers podemos com facilidade criar gráficos de diversos tipos no ASP.NET MVC, o helper de AntiForgery nos ajuda a evitar ataques através dos formulários de nosso site, os atributos de validação facilitam o trabalho com os form inputs. O novo WebImage Helper e WebGrid Helper servem para facilitar a manipulação de imagens e lista de dados, respectivamente.

Em que situação o tema é útil

No desenvolvimento de aplicações mais seguras, onde a validação dos dados merece atenção sem esquecer da estrutura do código, agora mais limpo, melhorando a leitura do HTML e separando o comportamento da interface de usuário.

Resumo do DevMan

Este artigo continua apresentando algumas novidades do ASP.NET MVC 3. Temos uma série de novidades como melhorias no ValidationAttribute, a interface IValidatableObject, Remote Validation e Compare Validation. Estes garantem qualidade na validação de informações. Veremos ainda o WebImage Helper que consegue com muita facilidade criar efeitos de watermark, recortar, rotacionar e salvar imagens. Veremos ainda alguns helpers que disponibilizam serviços em nossas páginas, como por exemplo Twitter Helper, Bing Helper e Gravatar Helper. Veremos também que algumas destas novidades já fazem parte do pacote RC do ASP.NET MVC 3, que foi lançado recentemente.

Boa parte do trabalho com Razor, a nova view engine do ASP.NET MVC, já foi apresentada. Sem dúvida ficou claro que o Razor é uma das principais novidades e o principal lançamento desta nova versão do ASP.NET MVC. Contudo, não se pode ignorar as outras novidades que estão sendo lançadas.

O ASP.NET MVC possui um modelo de validação de dados bastante interessante, utilizando attributes é possível validar os diversos formatos dos dados que são lançados em nossos sistemas Web, tudo de uma forma automática, graças ao model binder do ASP.NET MVC (veja nota do DevMan). Nesta nova versão existe a facilidade para utilizar os recursos de validação presentes no .NET 4.0, além da adição de dois novos atributos de validação: Remote e Compare. É muito comum que em nossas aplicações necessitemos da confirmação de alguns dados informados, como por exemplo e-mail e senha. Comparar se estes valores são iguais agora é realmente muito simples com a utilização do attribute Compare. Já o atributo Remote é capaz de sinalizar para a validação jQuery (Client-side) que utilize um método server-side para realizar a validação, desta forma é possível evitar duplicações de código, e garantir que de fato nossas regras para validação estejam no server e não apenas no client.

Este artigo também trata de Web Helpers. Já é sabido que quando é utilizado o ASP.NET MVC, os controles server side não são utilizados. Os controles padrão do ASP.NET Web Forms que possuem seus estados gerenciados pelo servidor não estão disponíveis no MVC. Grande parte disso é pelo fato de não se ter o View State no ASP.NET MVC, o que é um ganho e um benefício muito grande. No entanto, estão disponíveis alguns Web Helpers que auxiliam em algumas tarefas, que podem ou não possuir alguma saída gráfica. Alguns Web Helpers estão disponíveis já nessa versão RC de forma nativa, alguns outros estão em um assembly separado que precisa ser instalado, apesar disso, também são desenvolvidos e mantidos pelo time do ASP.NET MVC.

Antes de mais nada, faremos a atualização do ASP.NET MVC 3, que no artigo anterior estava utilizando a versão Beta, neste artigo utilizaremos a nova versão RC (que até o momento de escrita do artigo é a versão mais recente).

Nota do DevMan

De uma forma resumida, um model binder seria o equivalente ao View State no ASP.NET. A transferência de tipos complexos entre páginas tem sido um grande desafio para o desenvolvimento web. Isso se dá pela sua natureza desconectada. Existem várias maneiras de se resolver esse problema. O uso do ViewState ou de Sessões é um bom exemplo disso. Mas o ASP.NET MVC vem apresentar algo diferente, que traz o seguinte benefício: Controle completo sobre a desserialização do tipo complex (objeto) que foi passado no método Action. Comparando o ASP.NET tradicional com o ASP.NET MVC, imagine a situação de uma tabela que é a lista de clientes e a primeira coluna dessa tabela é uma ação de Editar. Assumindo que o link dessa ação de editar seja “/Usuarios/Editar.aspx?IDUsario=123”, na página ASP.NET, no evento Load o seguinte código seria necessário:

private void Page_Load(object sender, EventArgs e)
  {
     int userID = 0;
   
     if (int.TryParse(Request["IDUsuario"], out userID) == false)
     {
         // Id do usuário não foi passado, redirecionar para outro lugar.
     }
   
     User usuarioCorrente = GetUsuarioFromBancoDeDados(userID);
   
     if (usuarioCorrente == null)
     {
         // Id do usuário inválido, não retornou ninguém, então redireciona para outro local.
     }
    // ...
  }

Nada de muito ruim nele. Apenas que se tornaria um código repetitivo e, além disso, não é muito orientado a objetos, visto que os dados são sempre retirados da string da url. Agora utilizando os model binders é possível deixar o código como a seguir:

public ActionResult Editar(User usuarioCorrente)
  {
     if (usuarioCorrente == null)
     {
         // Usuário não fornecido, redirecionar.
     }
   
     // ...
  } ... 

Quer ler esse conteúdo completo? Tenha acesso completo