0

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

4

1 に答える 1

2

MVC 2 Futures の既知の問題 - http://forums.asp.net/p/1535698/3732346.aspxと同じ根本的な原因。

内部データベースから、ファイルにパッチを適用して MVC Futures を自分で再コンパイルする場合:

バグは LinkBuilder.cs の 21 行目にあります。メソッド呼び出し GetVirtualPath() は GetVirtualPathForArea() である必要があります。

于 2010-04-07T19:05:24.137 に答える