Маршрутизация URL-адресов ASP.NET MVC не дает мне красивых URL-адресов

StackOverflow https://stackoverflow.com/questions/607798

  •  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
            );
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top