Какой маршрут мне нужен для предоставления тщеславных URL?
я хотел бы предоставить своим пользователям тщеславный URL, что-то вроде:
www.foo.com/sergio
Какой маршрут мне нужно создать?
Представьте, что у меня есть следующий контроллер и действие, как я могу сопоставить URL-адрес тщеславия с этим контроллером?
public ActionResult Profile(string username)
{
var model = LoadProfile(username);
return View(model);
}
Вот что ямы пробовали и что происходит:
Вариант А:Каждый URL-адрес перехвачен в этом маршруте, то есть каждый введенный мной URL направляет меня к контроллеру аккаунта, а не толькоfoo.com/[USERNAME]
, Не хорошо.
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
);
}
Вариант Б:Маршруты по умолчанию работают хорошо, но при попытке посетить профильfoo.com/[USERNAME]
Я получаю ошибку 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 }
);
}