是否可以将默认路由的`area=""`改为非空字符串值?
Can `area=""` of the default route be changed to non-empty string value?
在 Visual Studio 中创建新的 MVC 项目时,在 _Layout.cshtml
文件中创建的导航栏包含如下所示的 link。它的作用是作为您应用程序的 "Home" 按钮,area=""
值表示默认区域。
它工作得很好,但我想知道是否可以用命名值替换 ""
。
@Html.ActionLink("Sample", "Index", "Home",
new { area = "" }, new { @class = "navbar-brand" })
我查看了默认路由,没有看到任何区域参数。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id =
UrlParameter.Optional }
);
我可以做一些简单的调整,以便 area=""
可以写成 `area="default" 或其他一些非空值吗?
使用 ActionLink/RouteLink/UrlHelper 时有一种特殊情况,您必须将 area
放入路由值集合中。
然而,在幕后 MVC 实际上使用 DataTokens["area"]
来确定要匹配的区域。因此,如果您正在与当前请求进行比较,您可以检查 DataTokens["area"]
是否存在 - 如果不存在,则表示对默认区域的请求。
如果您希望它们特定于某个区域,您也可以在路线配置中的路线上设置该参数。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id =
UrlParameter.Optional }
).DataTokens["area"] = "default";
在 Visual Studio 中创建新的 MVC 项目时,在 _Layout.cshtml
文件中创建的导航栏包含如下所示的 link。它的作用是作为您应用程序的 "Home" 按钮,area=""
值表示默认区域。
它工作得很好,但我想知道是否可以用命名值替换 ""
。
@Html.ActionLink("Sample", "Index", "Home",
new { area = "" }, new { @class = "navbar-brand" })
我查看了默认路由,没有看到任何区域参数。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id =
UrlParameter.Optional }
);
我可以做一些简单的调整,以便 area=""
可以写成 `area="default" 或其他一些非空值吗?
使用 ActionLink/RouteLink/UrlHelper 时有一种特殊情况,您必须将 area
放入路由值集合中。
然而,在幕后 MVC 实际上使用 DataTokens["area"]
来确定要匹配的区域。因此,如果您正在与当前请求进行比较,您可以检查 DataTokens["area"]
是否存在 - 如果不存在,则表示对默认区域的请求。
如果您希望它们特定于某个区域,您也可以在路线配置中的路线上设置该参数。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id =
UrlParameter.Optional }
).DataTokens["area"] = "default";