如果应用程序被分组到区域中,是否需要在actionlink中具有“区域”路由值?

时间:2011-04-05 09:00:50

标签: asp.net routing

我有一个名为“UserProfile”的区域。 从索引视图我想从根控制器(非区域)调用一个Action。 我使用了Html.ActionLink(“索引”,“主页”)

当我运行应用程序时,生成的URL是“/ UserProfile / Home / Index”而不是“/ Home / Index”。


查看Index.aspx
控制器:App / Controller / HomeController
路径:App / Views / Home

区域
查看:Index.aspx
路径:App / Areas / UserProfile / Views / User
ActionLink:Html.ActionLink(“索引”,“主页”)

2 个答案:

答案 0 :(得分:14)

是的,如果您正在使用某些区域,那么总是Area链接中指定ActionLink,如果您不希望链接发送,则为空到特定区域,如下:

Html.ActionLink("Home", "Index", "Home", new { Area = "" }, new { })

这是必需的,否则,如果您未指定Area,则将使用用户当前所在的那个。

例如,如果您使用ActionLink而未在Area页面中指定_Layout.cshtml,则只要您保留在应用程序的根目录中,它就会起作用。从您进入某个区域的那一刻起,该链接将生成为\currentArea\the_rest_of_the_link,因此将不再有效。

答案 1 :(得分:0)

我更喜欢RouteLink方法,因为它会完全呈现它。

@Html.RouteLink( 
      "Home Page", 
      "Default", 
      new 
      { 
         Action = "Index", 
         Controller = "Home" 
      } 
)

试一试。