ASP.NET MVC: Tratamento centralizado de mensagens com TempData

Olá, pessoal

Hoje vou mostrar uma forma legal de tratar a exibição de mensagens em uma aplicação ASP.NET MVC. A ideia é baseada <neste post>, de uma forma mais simplificada, como sugerida nos comentários do mesmo. Serve como um pequeno exercício de ActionResult e extension methods.

O propósito aqui consiste em encapsular o nosso bom e velho <TempData> em uma action result customizada. Com isso, evitamos a repetição da atribuição ao TempData em todas as actions, deixamos o código da action mais expressivo e menos sujeito a erros, já que o TempData usa uma “string mágica” como chave. Continue lendo »

ASP.NET MVC: Criando um tipo personalizado de Action Result

Blz, pessoal

Falei no post anterior de MVC sobre as action results como objetos responsáveis pela resposta ao navegador, seja como uma página html, um arquivo pdf, um redirecionamento para outra action, etc.

Embora os tipos built-in de action result atendam a maioria dos casos, é possível implementar sua própria action result, derivando de uma das action results existentes ou ainda da classe abstrata ActionResult diretamente.

Vou mostrar neste post um exemplo disso: retornar uma imagem com marca d’água. Este exemplo foi retirado do ótimo livro Pro ASP.NET MVC 2 Framework. Continue lendo »

ASP.NET MVC Action Results

Galera, neste post falarei um pouco sobre action results.

Em geral, quando um controller recebe uma requisição e a processa, ele gera algum tipo de resultado para o usuário. Este resultado pode ser uma view, um redirecionamento HTTP, texto em formato XML ou JSON, entre outros.

Tudo isso poderia ser feito diretamente na action de um controller, como abaixo:

public void Index()
{
   Response.Write("<b>Hello, World!</b>");
   // outro exemplo:
   Response.Redirect("/AlgumaUrl");
}

No entanto, a solução acima não é uma boa prática, uma vez que ela mistura geração de html com a lógica da aplicação prejudicando, assim, a SoC (separation of concerns). Além disso, essa solução dificulta a realização de testes de unidade, uma vez que seria preciso “mockar” o objeto Response. Continue lendo »