Url.Action可以在MVC5中指定路由吗?

时间:2015-09-03 14:53:25

标签: asp.net-mvc-5

在我们的默认布局中,我们将徽标包含在URL.Action中以导航回主屏幕。但是,如果我们在某个区域,它会尝试导航到该区域中的主控制器,该控制器不存在。

我们的家庭控制器是提交。这是布局文件中的链接:

this

如果我在这样的区域:/ Admin / Security / Index
上面的链接试图转到:/ Admin / Submission / Index
但应该去:/提交/索引

我确信有更好的方法,但我还没有找到它。

2 个答案:

答案 0 :(得分:1)

像参数一样指定区域。所以你的第一行应该是:

<a class="navbar-brand custm-navbar-brand" href="@Url.Action("Index", "Submission", new { Area = "AreaName" })">

答案 1 :(得分:1)

您可以在Url.Action来电中指定区域,但这可能会变得混乱。

不是必须指定区域,为什么不将路由排除在外,以便知道将其绑定到该命名空间:

context.MapRoute("ExpressCheckoutRoute",
    "expresscheckout/stage/{stageName}/{id}",
    new { controller = "ExpressCheckout", action = "Stage", area = "FrontEnd", id = UrlParameter.Optional },
    new[] { "Web.Areas.FrontEnd.Controllers" }
    ).DataTokens["UseNamespaceFallback"] = false;

这为我排序了问题,我不再需要指定区域参数(请注意该映射的最后两部分)。