{tecnologia, conceitos, negócios, idéias, práticas, .NET, ruby, osx, ios e algo mais}
04/10/2010
O padrão do ASP.NET MVC para tratamento de rotas é trabalhar respondendo: "controller/action/id". Isto quer dizer que por padrão nossos projetos ASP.NET MVC respondem a requisições do tipo: "produtos/detalhes/10" ou "vendas/cancelar/23".
Se quisermos responder a requisições do tipo "minhaempresa/setor/controller/action/param1/param2/param3" não conseguimos isso por default, e é então que entra a configuração de rotas. Responder a uma requisição com mais de um parâmetro desta forma não é complexo, na verdade é algo bastante simples. Para um primeiro exemplo vamos imaginar que temos uma action que "mistura cores". Queremos poder escrever uma url assim no browser: "estudio/misturar/azul/vermelho/verde".
Este é nosso controller:
public class EstudioController : Controller{
[HttpGet]
public ActionResult Misturar(string cor1, string cor2, string cor3) {
object corMisturada = string.Format("{0} + {1} + {2}", cor1, cor2, cor3);
return View("NovaCor", corMisturada);
}
}
Se simplesmente acessarmos a url no browser, obteremos:
Para que possamos realizar a chamada a este recurso, e receber em nossa action os valores desejados, precisamos adicionar uma rota em nossa tabela de rotas. A configuração de rotas no ASP.NET MVC é feita no arquivo Global.asax, de uma maneira bastante simples. Nosso arquivo Global.asax deve estar assim:
public static void RegisterRoutes(RouteCollection routes){
routes.IgnoreRoute("{Resource}.axd/{pathInfo}");
routes.MapRoute(
"Default", // Route name
"{Controller}/{Action}/{Id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter Defaults
);
}
Este código adiciona uma rota a nossa tabela de roteamento. Vamos ver então como rotear para conseguirmos responder a nossas requisições precisamos do código a seguir:
routes.MapRoute(
"MisturarCores",
"{Controller}/{Action}/{cor1}/{cor2}/{cor3}
");
Com a adição desta rota, conseguimos responder então ao nosso recurso e chegar a nossa action com todos os parâmetros preenchidos.
Desta forma passamos a compreender um pouco mais como é que funciona o framework MVC no ASP.NET. Temos rotas mapeadas a serem respondidas, e isso não é assim apenas no ASP.NET, é assim também no Rails, um dos mais conhecidos frameworks MVC para web. Ter conhecimento e saber do potencial que temos ao trabalhar com as rotas com toda certeza nos ajudará a criar aplicações mais interessantes com o ASP.NET MVC. Criei uma View simples apenas para renderizar o resultado da nossa action, e aqui segue o resultado:
É isso galera, em breve veremos um pouco mais sobre como trabalhar com rotas no ASP.NET MVC.Veja aqui um overview sobre rotas no ASP.NET MVC: http://www.asp.net/mvc/tutorials/asp-net-mvc-routing-overview-cs
Abraços,
Vinicius Quaiato.