我遇到过一种情况,我在默认/根区域内有很多Html.ActionLink调用,不会指定区域,如下例所示。
@Html.ActionLink("Home", "Index", "Home")
问题在于我现在正在使用一个新的MVC区域,该区域从默认/根区域渲染部分视图,但链接未正确呈现,因为未定义区域,例如下面的示例中所示。
@Html.ActionLink("Home", "Index", "Home", new { area = "" })
显而易见的解决方案就是将区域规范添加到所有Html.ActionLink调用中,但不幸的是它们有很多,并且需要花费很多精力才能完全更改它们。
我处于这样的情况:我必须使用默认/根区域中的这些链接,并且想知道是否有一种方法可以设置Html.ActionLink调用首先搜索当前区域的位置但是如果没有匹配的控制器/ View发现它会搜索默认/根区域?我想声明我在项目中有多个MVC区域,因此解决方案需要的是一个不仅仅适用于两个区域的解决方案,包括默认/ root。
答案 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.
我希望你对此有所了解......