ASP.NET MVC路由返回null

时间:2011-07-14 11:31:11

标签: c# asp.net-mvc routing

我正在尝试获取以下路线的网址:

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返回 - 我错过了什么?

2 个答案:

答案 0 :(得分:3)

这不起作用吗?

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

您的代码似乎已将SiteAreaController值混淆。因此,您没有在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
});