データベース キャッシュからローカライズされたテキストを取得する HtmlHelper 拡張メソッドがあります。コードはこんな感じ。(MVCWeb は、私の MVC アプリの名前空間です。)
using System.Web;
using System.Web.Mvc;
namespace MVCWeb.PresentationExtensions
{
public static class HtmlHelperExtensions
{
public static HtmlString GetText(this HtmlHelper Html, string keyword)
{
// code to get the text based on the keyword
}
}
}
@using MVCWeb.PresentationExtensions
ビューで使用しています。~/Views フォルダーでは、拡張メソッドの呼び出しが完全に機能しています。
最近エリアを追加しました。~/Areas/AreaName/Views フォルダーの View ファイルで拡張メソッドを使用しています。コードはコンパイル中で動作しますが、IDE でエラーが発生します。
エリアビュー内から使用するたび@Html.GetText("SomeKeyword")
に、エラー一覧に以下の2つのエラーが表示されます。
- 'System.Web.WebPages.Html.HtmlHelper' には 'GetText' の定義が含まれておらず、最適な拡張メソッド オーバーロード 'MVCWeb.PresenationExtension.HtmlHelperExtensions.GetText(System.Web.Mvc.HtmlHelper, string)' にはいくつかの無効な引数があります
- インスタンス引数: 'System.Web.WebPages.Html.HtmlHelper' から 'System.Web.Mvc.HtmlHelper' に変換できません
~/Views で、@Html に次のコード コメントがあることがわかりました。
HtmlHelper<dynamic> WebViewPage<dynamic>.Html
Gets or sets the System.Web.Mvc.HtmlHelper object that is used to render HTML elements.
~/Area/AreaName/Views には、@Html に次のコメントがあります。
HtmlHelper WebPage.Html
Gets the System.Web.WebPages.Html.HtmlHelper object that is associated with a page.
参考までに、~/Views と ~/Areas/AreaName/Views の Web.config ファイルは一致しています。これは .NET 4.5 上の MVC4 アプリであり、以前のバージョンの MVC から変換されていません。
- @Html が通常の Views と Area Views で異なるタイプとして定義されているのは正常ですか?
- IDE がエラーを表示しているのに、これが正しくコンパイルおよび実行されるのはなぜですか? これは IDE のバグですか?
- これらのエラーが IDE に表示されないようにするにはどうすればよいですか?