Dica rápida – Utilizando RouteAttribute para configurar as rotas

Fala galera!

O ASP.NET MVC adota por padrão o template {controller}/{action}/{id?}, mas podemos desabitar essa rota e pedir para o serviço de rotas mapear de acordo com os atributos informados nas actions.

Bom, para ativar essa feature vá até o seu RouteConfig (se você não mexeu na estrutura padrão do projeto, está em App_Start.

Dentro do método RegisterRoutes, comente o código da rota padrão (ou exclua) e adicione o código para mapear os atributos (MapMvcAttributeRoutes):

       public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            //routes.MapRoute(
            //    name: "Default",
            //    url: "{controller}/{action}/{id}",
            //    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            //);

            routes.MapMvcAttributeRoutes();
        }

Todos os meus links pararam de funcionar, e agora? Calma!!!

Agora é só configurar as rotas nos seus Controllers.

Veja como eu configurei a action Index do HomeController:

        // http://localhost:26535/home
        [Route("home")]
        public ActionResult Index()
        {
            return View();
        }

Se configurarmos também o RoutePrefix no Controller, todas as rotas dele terão o seu prefixo:

    [RoutePrefix("app")]
    public class HomeController : Controller
    {
        // URL: http://localhost:26535/app/home
        [Route("home")]
        public ActionResult Index()
        {
            return View();
        }

        // URL: http://localhost:26535/app/about
        [Route("about")]
        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }

        // URL: http://localhost:26535/app/contact
        [Route("contact")]
        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }

Para mais informações detalhadas, sugiro uma boa lida neste artigo:
http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx

Até a próxima!


Curta também minha página no Facebook para ficar por dentro das novidades:
https://www.facebook.com/devleonardohofling