`area =""的目的是什么? `在Html.ActionLink中?

时间:2015-12-25 23:50:02

标签: asp.net-mvc razor

当我使用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中使用过这个属性。

2 个答案:

答案 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" })