ASP.NET MVC - Маршруты и UrlHelper
У меня следующий маршрут
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 ответа
Я думаю, что ваша проблема в том, что вы не указали название маршрута в своем звонке. Попробуй использовать
UrlHelper.RouteUrl(**"GigDayListings"**, ViewContext.RouteData.Values);
перегрузка с названием маршрута.
Ура!
Вы проверяли, что когда вы предоставляете gig/list/2008/01/01, что он на самом деле использует маршрут GigDayListings? Может быть, он использует другой