ASP.NET MVC htmlヘルパーが機能しない
-
07-07-2019 - |
質問
誰かが私を助けてくれることを願っています。 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の変更を適用するために再起動する必要があります。