ASP.NET MVC - Маршруты и UrlHelper - PullRequest
4 голосов
/ 19 января 2009

У меня есть следующий маршрут

routes.MapRoute(
    "GigDayListings",                                   // Route name
    "gig/list/{year}/{month}/{day}",                    // URL with parameters
    new { controller = "Gig", action = "List" },
    new
    {
        year = @"^[0-9]+$",
        month = @"^[0-9]+$",
        day = @"^[0-9]+$"
    }  // Parameter defaults
);

Когда я посещаю URL

gig/list/2009/01/01

Этот маршрут идеально подходит, и мое действие называется.

В моем представлении у меня есть помощник, который делает следующее:

var urlHelper = new UrlHelper(ViewContext);
string url = urlHelper.RouteUrl(ViewContext.RouteData.Values);

Сгенерированная строка:

http://localhost:3539/gig/list?year=2005&month=01&day=01

Почему это не

http://localhost:3539/gig/list/2005/01/01

Что я делаю не так?

Ответы [ 2 ]

9 голосов
/ 19 января 2009

Я думаю, что ваша проблема в том, что вы не указали название маршрута в своем вызове. Попробуйте использовать

UrlHelper.RouteUrl(**"GigDayListings"**, ViewContext.RouteData.Values); 

перегрузка с названием маршрута.

ура!

0 голосов
/ 20 января 2009

Проверяли ли вы, что когда вы предоставляете gig / list / 2008/01/01, что он фактически использует маршрут GigDayListings? Может быть, он использует другой

...