ASP.NET MVC URL маршрутизация не дает мне красивые URL - PullRequest
5 голосов
/ 03 марта 2009

Я настроил проект 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), тогда вызывается правильный контроллер и действие, но параметр, определенный в методе действия, всегда равен нулю.

Есть идеи?

Ответы [ 2 ]

5 голосов
/ 03 марта 2009

попробуйте добавить:

routes.MapRoute(
                    "Default",                                                                                              // Route name
                    "{controller}/{action}/{param}",                                                   // URL with parameters
                    new { controller = "Home", action = "Index", param = "" }  // Parameter defaults
            );
4 голосов
/ 03 марта 2009

Я думаю, что ссылка будет использовать маршрут по умолчанию, как вы ожидаете, если имя параметра id вместо param. Вам нужно будет создать другой маршрут, если вы хотите указать какой-то другой параметр.

...