ASP.NET MVC - 路由和UrlHelper

4
我有以下路由。
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

我做错了什么?


我访问的网址是:http://localhost:3539/gig/list/2005/01/01对于打字错误感到抱歉! - iasksillyquestions
2个回答

9
我认为你的问题在于你在调用时没有指定路由名称。尝试使用:
UrlHelper.RouteUrl(**"GigDayListings"**, ViewContext.RouteData.Values); 

使用路由名称进行过载。

干杯!


0
你有检查过当你提供gig/list/2008/01/01时,它是否实际上使用了GigDayListings路由吗?也许它正在使用不同的路由。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接