如何指定默认区域而不向每个ActionLink添加区域=""

iam*_*ill 14 asp.net-mvc asp.net-mvc-areas

我有一个基于ASP.NET MVC2 RC2构建的大型现有应用程序.

我的所有链接都是这样的:htp // site/controller/action/id

我刚刚添加了一个名为:BigBird的区域.

现在,当我在BigBird区域时,我的所有链接都是这样的:htp:// site/BigBird/controller/action/id

问题是我的新区域中没有这些控制器/操作.因此,我必须遍历我的应用程序中的所有actionlinks并将此routevalue:area = string.empty

有没有办法解决?

Eri*_*dio 12

如果您使用的是标准的MVC方法(除了可能会覆盖它们以调用您自己的版本),我不知道如何使用它,但如果您使用的ActionLink<TController>是MvcFutures lib中提供的或其他通用方法,那么您可以.

MvcFutures方法调用ExpressionHelper.GetRouteValuesFromExpression(),它ActionLinkAreaAttribute在控制器上查找确定区域的方法.因此,您可以在主"区​​域"中装饰您的控制器,如下所示:

[ActionLinkArea("")]
[HandleError]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

应使用标准语法正确生成操作链接:

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