質問

誰かが私を助けてくれることを願っています。 MVCアプリケーション用のカスタムhtmlヘルパーを作成しようとしています。まず最初に、指定されたparamの

タグのみを書き込むテスト用のものを試しました。 問題は、名前空間を明示的にインポートしない限り機能しないということです。 私は多くのことを読んでおり、読んだように、そのメソッドは次のようなインポート名前空間なしで表示されるはずです:

<%=Html.Prueba("This is a paragraph") %>

ただし、このメソッドPruebaはVS Intellisenseには表示されません。

私のクラスは次のとおりです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;

namespace EasyGoCostaRica.Helpers
{
    public static class ViewsHelpers
    {
        //This method is just for testing. Is not working :(
        public static string Prueba(this HtmlHelper helper, string param1)
        {
            return string.Format("<p>{0}</p>", param1);
        }
    }

}

事前に感謝します!

役に立ちましたか?

解決

ネームスペースはどこかで宣言/インポートする必要があります。次のいずれかを実行できます。

  • ページ自体内
  • マスターページまたは
  • web.configファイル内

グローバルなものが必要な場合は、web.configで名前空間を構成するのが最善です。

最初の2つには<@import...>ディレクティブを使用し、最後の1つには<namespace>構成要素を使用します。

他のヒント

web.configに名前空間を追加できます。後でそれについて心配する必要はありません。

web.configの内部には、次のようなものが表示されます。

<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Linq"/>
<add namespace="System.Collections.Generic"/>
</namespaces>

名前空間に行を追加するだけです。

ヘルパーをグローバルにインポートしたくない場合、各ディレクトリに独自のweb.configを含めることができます。特に設定しない限り、これらの<!> quot; sub <!> quot; web.configsは上位のweb.configsから設定を継承します。このルートを選択した場合、一部の設定はアプリケーションレベルでしか設定できないことに注意してください。紛らわしくなります。

Visual Studio 2013では、何らかの理由で、web.configの変更を適用するために再起動する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top