Que tipo de rota eu precisaria para fornecer URLs de vaidade?
Eu gostaria de fornecer aos meus usuários um URL de vaidade, algo como:
www.foo.com/sergio
Que tipo de rota eu precisaria criar?
Imagine que eu tenho o seguinte controlador e ação, como posso mapear uma URL vaidade para esse controlador?
public ActionResult Profile(string username)
{
var model = LoadProfile(username);
return View(model);
}
Aqui está o que eu tentei e o que acontece:
Opção A:Cada url é capturado nesta rota, o que significa que todas as URLs que eu digito direcionam-me para o controlador da conta, em vez de apenasfoo.com/[USERNAME]
. Nada de bom.
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Profile",
"{username}",
new { controller = "Account", action = "Profile", username = UrlParameter.Optional }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
Opção B:Rotas padrão funcionam bem, mas ao tentar visitar um perfilfoo.com/[USERNAME]
Eu recebo um erro HTTP 404.
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
);
routes.MapRoute(
"DentistProfile",
"{username}",
new { controller = "Account", action = "Profile", username = UrlParameter.Optional }
);
}