4

データベース キャッシュからローカライズされたテキストを取得する 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 に表示されないようにするにはどうすればよいですか?
4

2 に答える 2

1

web.config に正しい参照が含まれており、実行時に正しく一致するため、問題なく動作します。

それは単なるエリアの ide バグです。それを取り除くには、 @include を使用してビューの上部にインクルードとして指定できます。これにより、IntelliSense が助けになります。

于 2013-02-18T22:11:40.743 に答える