¿Qué tipo de ruta necesitaría para proporcionar URL de vanidad?
Me gustaría proporcionar a mis usuarios un URL de vanidad, algo como:
www.foo.com/sergio
¿Qué tipo de ruta necesitaría crear?
Imagine que tengo el siguiente controlador y acción, ¿cómo puedo asignar una URL de vanidad a ese controlador?
public ActionResult Profile(string username)
{
var model = LoadProfile(username);
return View(model);
}
Esto es lo que he probado y lo que pasa:
Opción A:Cada url está atrapado en esta ruta, lo que significa que cada URL que escribo me dirige hacia el controlador de la cuenta, en lugar de solofoo.com/[USERNAME]
. No es bueno.
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
);
}
Opción B:Las rutas predeterminadas funcionan bien, pero al intentar visitar un perfilfoo.com/[USERNAME]
Recibo un error 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 }
);
}