2011-04-05 36 views
9

我有一个叫做“UserProfile”的区域。 并从它的索引视图我想调用根控制器(非区域)的操作。 我使用Html.ActionLink(“Index”,“Home”)如果应用程序被分组到区域中,是否需要在actionlink上有“区域”routevalue?

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


查看Index.aspx的
控制器:应用程序/控制器/ HomeController的
路径:应用程序/浏览/首页


查看:Index.aspx的
路径:应用程序/地区/用户配置/浏览/用户
ActionLink的:Html.ActionLink( “指数”, “家”)

回答

14

是的,如果你使用的地区工作,你应该始终指定AreaActionLink链接,一个空的,如果你不希望链接到一个特定的区域,如:

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

这是必要的,否则,如果不指定Area,在其中一个用户在此刻将被使用。

例如,如果您在_Layout.cshtml页面中使用ActionLink而没有指定Area,那么只要您停留在应用程序的根目录中,它就会工作。从你进入一个区域,虽然那一刻,链接将作为\currentArea\the_rest_of_the_link产生,因此,将不再工作。

+0

伴侣 - 你救了我的屁股。大起来,老兄! – 2011-11-03 08:26:02

0

我喜欢RouteLink方法,因为它会准确地呈现它。

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

给它一个镜头。