ASP.NET MVC ActionLink外部区域

ozs*_*gal 30 asp.net-mvc asp.net-mvc-areas

MVC中的一项简单任务有时会成为一项艰巨的挑战.

好吧,我有一个名为Admin的区域.我在这个区域的Shared目录中有一个名为"Forbidden"的页面.

目标很简单:我需要创建一个Html.ActionLink,它生成一个链接以返回主页,该主页位于Admin区域的外部.

所以,我尝试,<%= Html.ActionLink("Back","Index",new {controller="Home"})%>并生成:

http://localhost/Admin/Home/Index
Run Code Online (Sandbox Code Playgroud)

错了!我想:

http://localhost/Home/Index
Run Code Online (Sandbox Code Playgroud)

如何创建从区域到默认控制器结构的链接?

Man*_*ous 54

试试这个 :

<%= Html.ActionLink("Back", "Index", "Home", new { area = "" }, null) %> 
Run Code Online (Sandbox Code Playgroud)

使用区域时,您应该始终通过添加路线值来指定您在ActionLinks中调用的区域,如果链接位于区域之外(如您的情况),则只需对该区域使用空参数.


我发现在任何ASP.NET MVC项目(T4MVC)中都有一个很好的扩展.它使您的ActionLinks看起来更清晰,并保护它们免受错误的影响.

所以上面的代码看起来像这样:

<%= Html.ActionLink("Back", MVC.Home.Index()) %>
Run Code Online (Sandbox Code Playgroud)

当使用区域时:

<%= Html.ActionLink("Some Link", MVC.Admin.SomeController.SomeAction()) %>
Run Code Online (Sandbox Code Playgroud)

这是一部分MvcContrib在CodePlex项目在这里

你应该考虑使用它.