Jakiego rodzaju trasy potrzebowałbym, aby podać adresy URL próżności?
Chcę udostępnić moim użytkownikom niestandardowy adres URL: coś w stylu:
www.foo.com/sergio
Jaką trasę musiałbym stworzyć?
Wyobraź sobie, że mam następujący kontroler i działanie, jak mogę zmapować niestandardowy adres URL do tego kontrolera?
public ActionResult Profile(string username)
{
var model = LoadProfile(username);
return View(model);
}
Oto, co próbowałem i co się dzieje:
Opcja A:Każdy adres URL jest przechwytywany na tej trasie, co oznacza, że każdy adres URL typu I kieruje mnie do kontrolera konta, a nie tylkofoo.com/[USERNAME]
. Nie dobrze.
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
);
}
Opcja B:Domyślne trasy działają dobrze, ale podczas próby odwiedzenia profilufoo.com/[USERNAME]
Otrzymuję błąd 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 }
);
}