Как создать дружественный URL-адрес в ASP.NET MVC?
Как создать дружественные URL-адреса в ASP.NET MVC Framework? Например, у нас есть URL-адрес, который выглядит так:
http://site/catalogue/BrowseByStyleLevel/1
1 - это идентификатор уровня исследования (выше в этом случае) для просмотра, но я хочу переформатировать URL таким же образом, как это делает StackOverflow.
Например, эти два URL-адреса перенесут вас в одно и то же место:
https://stackoverflow.com/info/119323/nested-for-loops-in-different-languages
https://stackoverflow.com/info/119323/
EDIT: Дружественная часть URL-адреса называется slug.
Ответы
Ответ 1
Для решения этой проблемы есть два шага. Сначала создайте новый маршрут или измените маршрут по умолчанию, чтобы принять дополнительный параметр:
routes.MapRoute( "Default", // Route name
"{controller}/{action}/{id}/{ignoreThisBit}",
new { controller = "Home",
action = "Index",
id = "",
ignoreThisBit = ""} // Parameter defaults )
Теперь вы можете ввести все, что хотите, в конце вашего URI, и приложение проигнорирует его.
Когда вы визуализируете ссылки, вам нужно добавить "дружественный" текст:
<%= Html.ActionLink("Link text", "ActionName", "ControllerName",
new { id = 1234, ignoreThisBit="friendly-text-here" });
Ответ 2
у вас есть маршрут на global.asax
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = ""}
// Parameter defaults )
вы можете определить свой собственный маршрут, например:
контроллер - это класс cs внутри папки контроллеров.
вы можете определить свой идентификатор - с выбранным вами именем.
система передаст значение вашему методу actionResult.
вы можете прочитать об этом здесь: http://www.asp.net/learn/mvc/tutorial-05-cs.aspx
Ответ 3
Вот как я применил URL-адрес slug в своем приложении.
Примечание. Макрос по умолчанию не следует изменять, а также маршруты обрабатываются в том порядке, в котором они добавлены в список маршрутов.
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home",
action = "Index",
id = UrlParameter.Optional
} // Parameter defaults
);
routes.MapRoute("Place", "{controller}/{action}/{id}/{slug}", new { controller = "Place", action = "Details", id = UrlParameter.Optional,slug="" });