【问题标题】:Strongly typed Html.ActionLink<T>() helper extension from MVC Futures doesn't do well with areas来自 MVC Futures 的强类型 Html.ActionLink<T>() 辅助扩展不适用于区域
【发布时间】:2010-04-07 15:15:39
【问题描述】:

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

[ActionLinkArea("SomeArea")]

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

[ActionLinkArea("")]

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

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

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

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

【问题讨论】:

  • 这是设计使然。区域自粘;如果你想从一个区域跳到另一个区域,你必须明确指定新区域(或非区域)。

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


【解决方案1】:

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

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

该错误位于 LinkBuilder.cs 第 21 行。 方法调用 GetVirtualPath() 应该是 GetVirtualPathForArea()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    相关资源
    最近更新 更多