MVC区域中的Html.ActionLink是否可以呈现默认/根区域的链接,而无需使用新的{area ="" }

时间:2018-05-17 01:04:49

标签: asp.net-mvc razor html-helper asp.net-mvc-areas

我遇到过一种情况,我在默认/根区域内有很多Html.ActionLink调用,不会指定区域,如下例所示。

@Html.ActionLink("Home", "Index", "Home")

问题在于我现在正在使用一个新的MVC区域,该区域从默认/根区域渲染部分视图,但链接未正确呈现,因为未定义区域,例如下面的示例中所示。

@Html.ActionLink("Home", "Index", "Home", new { area = "" })

显而易见的解决方案就是将区域规范添加到所有Html.ActionLink调用中,但不幸的是它们有很多,并且需要花费很多精力才能完全更改它们。

我处于这样的情况:我必须使用默认/根区域中的这些链接,并且想知道是否有一种方法可以设置Html.ActionLink调用首先搜索当前区域的位置但是如果没有匹配的控制器/ View发现它会搜索默认/根区域?我想声明我在项目中有多个MVC区域,因此解决方案需要的是一个不仅仅适用于两个区域的解决方案,包括默认/ root。

1 个答案:

答案 0 :(得分:0)

   1. Create a new ASP.NET MVC 3 application using the default Visual Studio template
   2. Add an area called Admin using Visual Studio designer by right clicking on the project
   3. Add new Controller in ~/Areas/Admin/Controllers/MeetsController:

        public class MeetsController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    }
    Add a corresponding view ~/Areas/Admin/Views/Meets/Index.cshtml

    In the layout (~/Views/Shared/_Layout.cshtml) add links:

    @Html.ActionLink("Admin", "Index", "Meets", new { area = "Admin" }, null)
    @Html.ActionLink("Admin", "Index", "Meets", new { area = "" }, null)
    Run the application.
    Rendered HTML for the anchors:

    <a href="/Admin/Meets">Admin</a>
    <a href="/Meets">Admin</a>
    As expected the first link works whereas the second doesn't.

我希望你对此有所了解......