2009-01-18 154 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路由?也許它使用了不同的一個