2011-07-14 93 views
2

我想獲得以下路線網址:ASP.NET MVC路由返回null

RouteTable.Routes.MapRoute(
    null, 
    "cinema", 
    new 
{ 
    Controller = "CinemaListings", 
    Action = "ShowCinemaLandingPage", 
    SiteArea = "CinemaTimes", 
    MainLandingPage = true 
}); 

我已嘗試以下方法生產的網址:

<%:Url.Action("ShowCinemaLandingPage", "CinemaTimes", new { SiteArea = "CinemaTimes", MainLandingPage = true})%> 
<%:Url.RouteUrl(new { Controller = "CinemaTimes", Action = "ShowCinemaLandingPage", SiteArea = "CinemaTimes", MainLandingPage = true })%>  

我我也試過只用控制器和動作名稱。我返回空 - 我錯過了什麼?

+0

What'type'是SiteArea?它是一個字符串參數嗎?你能向我們展示控制器/動作與這個映射的參數嗎? –

回答

3

不這項工作?

<%:Url.Action("ShowCinemaLandingPage", "CinemaListings", new { SiteArea = "CinemaTimes", MainLandingPage = true })%> 

這似乎從你的代碼,你已經混了SiteAreaController值。因此,您不是在Url.Action中提供控制器名稱,而是提供了SiteArea兩次(作爲第二個參數和附加路由值)。

+1

唉!我會給你一個測試回覆你*走開踢自己* –

+0

是的,我的錯。謝謝 :) –

-1

很難理解你的路線。首先,你還沒有給出它的名字(通過null之前我曾經遇到過的問題),然後在那裏沒有佔位符。

沒有給它一個控制器,這是行不通的。

<%:Url.Action("ShowCinemaLandingPage", "CinemaTimes", new { SiteArea = "CinemaTimes", MainLandingPage = true})%> 

在這裏您傳遞控制器名稱,但由於沒有控制器名稱,所以沒有路徑匹配。

所以我會用 - 在最低限度 - 這一點:

RouteTable.Routes.MapRoute(
    "GiveMeSomeNameWillYa?", 
    "{Controller}/{Action}", 
    new 
{ 
    Controller = "CinemaListings", 
    Action = "ShowCinemaLandingPage", 
    SiteArea = "CinemaTimes", 
    MainLandingPage = true 
}); 
+0

該路由對傳入請求有效。任何請求/電影將由'CinemaListings'控制器上的'ShowCinemaLandingPage'處理。我需要保持這種行爲。我嘗試添加路線名稱,但這沒有效果。 –

+0

-1路由名稱是完全可選的。 URL模板不需要控制器和操作標記,如果這些標記提供了默認值。 –