我正在尝试获取以下路线的网址:
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 })%>
我也尝试过只使用控制器和动作名称。我得到null返回 - 我错过了什么?
答案 0 :(得分:3)
这不起作用吗?
<%:Url.Action("ShowCinemaLandingPage", "CinemaListings", new { SiteArea = "CinemaTimes", MainLandingPage = true })%>
您的代码似乎已将SiteArea
与Controller
值混淆。因此,您没有在Url.Action
中提供控制器名称,而是提供了SiteArea
两次(作为第二个参数和附加路线值)。
答案 1 :(得分:-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
});