Маршрутизация URL-адресов ASP.NET MVC не дает мне красивых URL-адресов
-
03-07-2019 - |
Вопрос
Я настроил проект ASP.NET MVC, и все работает отлично, но у меня есть одна проблема с маршрутизацией.Мой Global.asax выглядит так:
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 = "" } // Parameter defaults
);
}
Итак, ничего необычного.Моя проблема в том, что когда я ссылаюсь на контроллер/действие/параметры с помощью HTML.ActionLink, например:
<%= Html.ActionLink("My link", "SomeAction", "SomeController", new {param="someParam"})%>
он должен сгенерировать (по крайней мере, то, что имеет смысл в моей голове) ссылку типа: http://www.localhost/SomeController/SomeAction/someParam
.
Но вместо этого он генерирует такую ссылку: http://localhost/SomeController/SomeAction?param=someParam
Если я вручную создаю ссылку, которая ссылается на ожидаемый результат (SomeController/SomeAction/someParam), тогда вызывается правильный контроллер и действие, но параметр, определенный в методе действия, всегда имеет значение null.
Есть идеи?
Решение
Я думаю, что эта ссылка будет использовать только маршрут по умолчанию, как вы и ожидаете, если имя параметра id
вместо param
.Вам придется создать другой маршрут, если вы хотите указать там какой-то другой параметр.
Другие советы
попробуйте добавить:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{param}", // URL with parameters
new { controller = "Home", action = "Index", param = "" } // Parameter defaults
);