Html.actionlink не генерирует правильный URL - PullRequest
3 голосов
/ 23 ноября 2011

Мой маршрут в global.asax выглядит следующим образом:

 routes.MapRoute(
            "History", // Route name
            "{controller}/{PageID}/{LanguageID}/{PreviousRevisionID}/{NewRevisionID}", // URL with parameters
            new { controller = "UserArea", action = "Index", PageID = 0, LanguageID = 0, PreviousRevisionID = 0, NewRevisionID = 0} // Parameter defaults
        );

Я использую Html.actionLink для создания URL-адреса подобным образом.

@Html.ActionLink(item.CreatedTS.ToString(), "Index", new { PageID = item.PageID ,LanguageID = item.LanguageID , PreviousRevisionID = item.PreviousRevisionID , NewRevisionID = item.NewRevisionID , controller = "History" });

Но URL-адрес создается следующим образом

http://localhost:2582/History?PageID=2&LanguageID=3&PreviousRevisionID=98&NewRevisionID=103

Но я хочу URL Вот так

http://localhost:2582/History/2/3/98/103

Где проблема

Ответы [ 2 ]

4 голосов
/ 23 ноября 2011

Используйте RouteLink вместо ActionLink:

@Html.RouteLink(item.CreatedTS.ToString(), "History", new { PageID = item.PageID ,LanguageID = item.LanguageID , PreviousRevisionID = item.PreviousRevisionID , NewRevisionID = item.NewRevisionID , controller = "History" });

О различиях см. Этот SO вопрос.

0 голосов
/ 23 ноября 2011

Возможно, ваши маршруты определены в неправильном порядке. Вы хотите, чтобы этот маршрут был определен до маршрута по умолчанию. Таким образом, ваши маршруты могут выглядеть примерно так.

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "History", // Route name
            "{controller}/{PageID}/{LanguageID}/{PreviousRevisionID}/{NewRevisionID}", // URL with parameters
            new { controller = "UserArea", action = "Index", PageID = 0, LanguageID = 0, PreviousRevisionID = 0, NewRevisionID = 0 } // Parameter defaults
        );

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Default", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
    }

Утилита маршрута отладчика Фила Хаака очень полезна для отладки маршрутов.

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

PM> Install-Package routedebugger

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...