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
。