ASP.. NET MVC路由返回null

本文关键字:返回 null 路由 MVC NET ASP | 更新日期: 2023-09-27 18:02:08

我正在尝试获取以下路由的URL:

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

我尝试了以下方法来生成URL:

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

我也尝试过只使用控制器和动作名称。我得到空返回-我错过了什么?

ASP.. NET MVC路由返回null

这不行吗?

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

从你的代码看来,你把SiteAreaController的值混淆了。因此,您没有在Url.Action中提供控制器名称,而是提供了两次SiteArea(作为第二个参数和额外的路由值)。

很难理解你的路线。首先,你没有给它的名称(传递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
});