当我使用Visual Studio 2013创建新的MVC项目时,我注意到在_Layout.cshtml文件中,菜单栏中有一个默认链接。
@Html.ActionLink("Application name", "Index", "Home",
new { area = "" }, new { @class = "navbar-brand" })
除new { area = ""}
部分外,这对我来说都是有意义的。 Intellisense表示此参数用于路由值。
我在Google搜索" Html.Actionlink路线值区域" (和其他排列),但无法找到任何"区域"的简单定义。是。
是否有一个简单的解释"区域"是什么?我之前从未在任何一个ActionLink中使用过这个属性。
答案 0 :(得分:4)
这告诉您在应用的根目录上创建一个到Home/Index
的操作链接。当您想使用Html.ActionLink()
方法从区域下的视图创建链接时,通常会使用此方法。
如果您没有将区域值指定为空字符串,它将创建指向YourCurrentAreaName/Home/Index
的链接
区域是您的功能的逻辑分组。您可以将其视为应用程序的子模块(例如:博客/管理员等)。 Here是一个关于应该帮助您理解它的区域的视频教程。
答案 1 :(得分:0)
此行为不仅限于区域,实际上这是confusing part of MVC behavior that they insist is by design。根据{{1}}的建议,如果要覆盖从当前请求自动注入的值,则必须明确提供路由值。
因此,如果您正在查看默认区域中的视图,则此操作链接生成的URL将指向默认区域。
Microsoft
@Html.ActionLink("Application name", "Index", "Home",
null, new { @class = "navbar-brand" })
但是,如果您正在查看来自/Home/Index
区域的操作结果,则该操作链接中的网址也会位于Admin
区域。
Admin
因此,为了覆盖默认行为,您需要使用空字符串显式指定该区域是默认的。
/Admin/Home/Index
这确保了当前视图的任何区域,URL都将用于默认区域。
@Html.ActionLink("Application name", "Index", "Home",
new { area = "" }, new { @class = "navbar-brand" })