我有一个建立在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") %>