6

誰かが私を助けてくれることを願っています。MVC アプリケーション用のカスタム html ヘルパーを作成しようとしています。まず第一に、私はテスト用のものを試してみました。

指定されたパラメーターのタグ。名前空間を明示的にインポートしない限り、機能しません。私はたくさん読んできましたが、読んでいるように、そのメソッドは次のようにインポート名前空間なしで表示されるはずです:

<%=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);
        }
    }

}

前もって感謝します!

4

3 に答える 3

13

名前空間はどこかで宣言/インポートする必要があります。次のいずれかを実行できます。

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

グローバルなものが必要な場合は、web.config で名前空間を構成することをお勧めします。

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

于 2009-09-15T05:46:28.570 に答える
7

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

于 2013-12-08T13:03:16.563 に答える
6

名前空間を 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 を含めることができます。特に設定しない限り、これらの「サブ」web.config は上位の web.config から設定を継承します。この方法を使用する場合は、アプリケーション レベルでしか設定できない設定があることに注意してください。すぐに混乱する可能性があります。

于 2009-09-15T05:46:33.623 に答える