我有以下路线
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
我究竟做错了什么?
我认为您的问题是您没有在通话中指定路线名称.尝试使用
UrlHelper.RouteUrl(**"GigDayListings"**, ViewContext.RouteData.Values);
路由名称重载.
干杯!