#asp.net #asp.net-mvc #routing #asp.net-mvc-routing
#asp.net #asp.net-mvc #маршруты #asp.net-mvc-routing
Вопрос:
Я работаю над проектом, в котором я использовал маршрутизацию по умолчанию
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}/{name}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional, name = UrlParameter.Optional } // Parameter defaults
);
У меня есть пользовательский контроллер и такие методы, как Index, create и details
Я не хочу создавать ссылки, подобныеhttp://mysite/users/details/111/somename вместо этого я хочу создать http://mysite/users/111/somename как URL-адрес типа stackoverflow. Я знаю, что могу достичь, зарегистрировав маршрут, подобный этому (перед маршрутом по умолчанию)
routes.MapRoute(
"UsersDetails", // Route name
"Users/{id}/{name}", // URL with parameters
new { controller = "Users", action = "Details", id = UrlParameter.Optional, name = UrlParameter.Optional } // Parameter defaults
);
но тогда все мои другие URL-адреса начинают создавать проблему. например, если у меня есть URL
http://somesite/users/registersuccess
Есть ли обходной путь для этой проблемы, или я должен зарегистрировать все URL-адреса.
С уважением
Parminder
Ответ №1:
Вам потребуется ограничение на ваш id
параметр для ваших маршрутов:
routes.MapRoute(
"UsersDetails",
"Users/{id}/{name}",
new { controller = "Users", action = "Details", id = UrlParameter.Optional, name = UrlParameter.Optional },
new { id="d " }
);
Тогда ваши другие маршруты не будут затронуты.