#asp.net-mvc-3 #url-rewriting
#asp.net-mvc-3 #url-перезапись
Вопрос:
У меня есть URL-адрес, подобный этому: http://website.com/Profile/Member/34
Мне нужно, чтобы этот URL-адрес выполнялся следующим образом: http://website.com/Profile/John
Дано John в качестве имени профиля для идентификатора пользователя = 34.
Кто-нибудь может дать мне указания, как это сделать?
Комментарии:
1. Вы пытаетесь изменить URL-адрес, чтобы, если кто-то перейдет к
http://website.com/Profile/Member/34
нему, он отображался какhttp://website.com/Profile/John
в их браузере? Или вы спрашиваете, как выполнить поиск, чтобы пользователь мог вводитьhttp://website.com/Profile/John
данные в браузере, и он найдет участника с идентификатором пользователя = 34?2. Да, Доммер, я хочу, чтобы, если кто-то переходит в Profile / Member / 34, он показывает Profile / John … это не вопрос маршрута контроллера, мне нужно переписать URL…
Ответ №1:
В global.asx вам нужно добавить новый маршрут.
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Member", // Route name
"Profile/{member}", // URL with member
new { controller = "YourController", action = "Profile"}
);
}
Вам все равно нужно будет реализовать действие, которое обрабатывает поиск профиля на основе {member} .
Ответ №2:
Вы должны добавить пользовательский маршрут в global.ascx.cs, который будет использоваться для перенаправления на исправный контроллер. Но я предполагаю, что «John» не является уникальным значением, поэтому вам придется сохранить идентификатор в URL-адресе, или, если John является именем пользователя и является уникальным, вы можете использовать этот URL:
routes.MapRoute("Member", "Profile/{member}", new { controller = "Member", action = "Profile"});
Затем в вашем контроллере у вас будет :
public ActionResult Profile(string username){
//fetch from the db
}
Если «John» не является уникальным значением, я предлагаю вам использовать :
routes.MapRoute("Member", "Profile/{id}/{member}", new { controller = "Member", action = "Profile"});
Таким образом, ваш URL-адрес будет выглядеть http://website.com/Profile/John/34 и ты контролер :
public ActionResult Profile(int id){
//fetch from the db
}
Дайте мне знать, если вам понадобится дополнительная помощь!
Комментарии:
1. Привет, Винниг, на самом деле мне нужно сохранить свой контроллер в качестве профиля, мое действие в качестве участника и сохранить поиск по идентификатору пользователя, но когда он отображается в URL, мне нужна перезапись для контроллера / имени пользователя