ASP.NET MVC - Routes和UrlHelper

时间:2009-01-18 23:26:20

标签: asp.net-mvc asp.net-mvc-routing 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
);

当我访问网址

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 个答案:

答案 0 :(得分:9)

我认为您的问题是您没有在通话中指定路线名称。尝试使用

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

路由名称重载。

干杯!

答案 1 :(得分:0)

您是否在提供gig / list / 2008/01/01时检查到它实际上正在使用GigDayListings路线?也许它正在使用另一个