2009-01-18 155 views
4

我有以下途径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 

我在做什么错误?

+0

我访问该网址是: 的http://本地主机:3539 /演出/列表/ 2005/03/03 很抱歉的错字! – iasksillyquestions 2009-01-18 23:29:41

回答

8

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

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

重载与路由名称。

干杯!

+0

拯救生命。谢谢 – Matt 2011-12-13 17:00:41

0

当您提供gig/list/2008/01/01时,您是否检查过它实际上使用GigDayListings路由?也许它使用了不同的一个