当我使用Visual 2013创建一个新的MVC项目时,我注意到在_Layout.cshtml文件中,菜单栏中有一个默认链接。
@Html.ActionLink("Application name", "Index", "Home",
new { area = "" }, new { @class = "navbar-brand" })这一切对我来说都是有意义的,除了new { area = ""}部分。Intellisense表示,此参数用于路由值。
我在谷歌上搜索了"Html.Actionlink路由值区域“(以及其他排列),但是找不到”区域“的任何简单定义。
对于什么是“区域”有一个简单的解释吗?我以前从未在我的ActionLinks中使用过这个属性。
发布于 2015-12-25 23:52:54
这说明要在应用程序的根目录上创建到Home/Index的动作链接。当您想要使用Html.ActionLink()方法从区域下的视图创建链接时,通常会使用此方法。
如果不将区域值指定为空字符串,则将创建指向YourCurrentAreaName/Home/Index的链接。
区域是功能的逻辑分组。您可以将其视为应用程序的子模块( Ex: Blog / Admin等)。这里是一个关于应该帮助你理解它的领域的视频教程。
发布于 2015-12-26 01:31:21
这种行为不仅限于领域,实际上这是一个他们坚持认为,MVC行为的混乱部分是通过设计实现的。。根据Microsoft的建议,如果要覆盖从当前请求中自动注入的值,则必须显式提供路由值。
因此,如果从默认区域查看视图,则此操作链接生成的URL将指向默认区域。
@Html.ActionLink("Application name", "Index", "Home",
null, new { @class = "navbar-brand" })/Home/Index
但是,如果您正在查看来自Admin区域的操作的结果,则来自该操作链接的URL也将位于Admin区域。
/Admin/Home/Index
因此,为了覆盖默认行为,需要使用空字符串显式指定该区域为默认区域。
@Html.ActionLink("Application name", "Index", "Home",
new { area = "" }, new { @class = "navbar-brand" })这确保了无论当前视图是什么区域,URL都是默认区域的URL。
/Home/Index
https://stackoverflow.com/questions/34467408
复制相似问题