1

これは標準的なタスクだと思っていましたが、私は多くの困難を抱えているので、助けを求めています.

ビューで集中的に使用するドロップダウンがあり、今@Html.DropDown()では同じロジックがたくさんあるので、これをカスタム html 拡張機能に置き換えるのに適していると判断しました。

プロジェクト構造を説明する代わりに、そのスクリーンショットを投稿します。

プロジェクトの構造

そのHtmlExtensions.csため、ネット上のどこかの例から見る必要があると思われるメソッドを作成しました。メソッドは次のようになります。

public static MvcHtmlString YesNoNotApplicableDDown(this HtmlHelper html)
        {
            return MvcHtmlString.Create("<select class=\"YesNoNotApplicable\"> <option value=\"1\">Yes</option> <option value=\"2\">No</option><option value=\"3\">NotApplicable</option></select>");
        }

web.config次に、下に名前空間を追加しますViews

<pages pageBaseType="System.Web.Mvc.WebViewPage">
      <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="MCSResources" />
        <add namespace="MaintenanceCheckSystem.Utils.HtmlExtensions" />
      </namespaces>
    </pages>

実際、最初にプロジェクトの名前の有無にかかわらず試したので、これもテストしました:

<add namespace="Utils.HtmlExtensions" />

次に、ビューの1つで試し@Html.Ye..ましたが、ヒントが得られず、チェックしたときにカスタムメソッドがありませんでした。何かを見逃したのか、何か間違ったことをしたのか (おそらく両方) はわかりません。どうすればこれを機能させることができますか?

4

3 に答える 3

1

この名前空間を web.config に登録してみることができます

<add namespace="MaintenanceCheckSystem.Utils" />

そして、次のようにビューでヘルパーを呼び出します。

@HtmlExtensions.YesNoNotApplicableDDown()
于 2013-05-23T09:10:49.227 に答える
1

最初の答え

拡張クラスは public static メソッドですか? サンプル コードにクラス定義が表示されていません。

これは、拡張メソッドの要件の1 つです。

アップデート

次のように名前空間を追加したとします。

<add namespace="Utils.HtmlExtensions" />

しかし、それは本当に名前空間ですか? 名前空間は単純に次のようではありません:

<add namespace="MaintenanceCheckSystem.Utils" />

クラス名を using ステートメントに含めないでください。

クラス名なしで、web.config に名前空間を登録する場合も同様です。

于 2013-05-23T09:23:24.880 に答える
0

書きます

@using MaintenanceCheckSystem.Utils.HtmlExtensions

.cshtml ファイルで

更新日:@using MaintenanceCheckSystem.Utils

于 2013-05-23T09:05:17.093 に答える