来自MVC Futures的强类型Html.ActionLink <t>()帮助扩展名不适用于区域</t>

时间:2010-04-07 15:15:39

标签: c# asp.net-mvc html-helper asp.net-mvc-futures

当使用ASP.NET MVC 2 Futures中的强类型HtmlHelper.ActionLink()扩展方法时,我注意到了一些奇怪的行为。当我使用它链接到区域中的控制器时,我必须在此控制器上使用以下属性

[ActionLinkArea("SomeArea")]

它从默认区域正确链接到位于SomeArea中的控制器的操作。问题是当我想从SomeArea中链接回位于默认区域的Controller操作时。该链接显示为“/ SomeArea /”前缀。我使用的解决方法是:

[ActionLinkArea("")]

在控制器上位于默认区域中的所有控制器上(使用继承)。

这看起来很奇怪,因为在我看来应该是这种方法的默认行为。在这个扩展方法上使用.NET Reflector我注意到错误在于:

return helper.RouteLink(linkText, routeValuesFromExpression, new RouteValueDictionary(htmlAttributes));

所以它实际上是HtmlHelper的默认行为。

1 个答案:

答案 0 :(得分:2)

MVC 2期货中的已知问题 - 与http://forums.asp.net/p/1535698/3732346.aspx相同的根本原因。

从我们的内部数据库中,如果你想修补文件并自己重新编译MVC Futures:

  

该错误发生在第21行的LinkBuilder.cs中。   该方法调用GetVirtualPath()   应该是GetVirtualPathForArea()。