可以将默认路由的“area =”“`更改为非空字符串值吗?

时间:2016-05-22 22:51:38

标签: asp.net-mvc asp.net-mvc-routing asp.net-mvc-areas

在Visual Studio中创建新的MVC项目时,_Layout.cshtml文件中创建的导航栏包含如下所示的链接。它用作应用程序的“主页”按钮,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”,或者其他一些非空值?

1 个答案:

答案 0 :(得分:1)

使用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";