asp.net-mvc – 如何为每个ActionLink指定默认区域而不添加area =“”

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 如何为每个ActionLink指定默认区域而不添加area =“”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个建立在ASP.NET MVC2 RC2上的大型现有应用程序.

我的所有链接如下所示:htp // site / controller / action / id

我刚刚添加了一个叫做BigBird的区域.

现在当我在BigBird区域时,我的所有链接如下所示:htp:// site / BigBird / controller / action / id

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

有没有办法解决

解决方法

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

MvcFutures方法调用ExpressionHelper.GetRouteValuesFromExpression(),它在控制器上查找一个ActionLinkAreaAttribute来确定该区域.所以您可以在主要“区域”中装饰您的控制器,如下所示:

[ActionLinkArea("")]
[HandleError]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

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

<%= Html.ActionLink<HomeController>(c => c.Index(),"Home") %>

猜你在找的asp.Net相关文章