私は非常にうまく動作するHtmlHelper用の拡張メソッドを作成しました。IDictionary <string、object>のオーバーロードでHtmlHelperを拡張するには?
public static MvcHtmlString EnumDropDownListFor<TModel, TEnum>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TEnum>> expression)
{
return EnumDropDownListFor(htmlHelper, expression, null);
}
public static MvcHtmlString EnumDropDownListFor<TModel, TEnum>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TEnum>> expression, IDictionary<string, object> htmlAttributes)
{
var items = DoSomething();
return htmlHelper.DropDownListFor(expression, items, htmlAttributes);
}
私は私の見解でそれを使用しようとしたとき、私はまだ次の例外だ:
を今私はので、私は次のことを試してみましたので、私はそれにCSSクラスを追加することができたIDictionaryを受け取り、過負荷を作成する必要がありますコンパイルエラー
説明:エラーは、この要求を処理するために必要なリソース のコンパイル時に発生しました。次の具体的な エラーの詳細を確認し、ソースコードを適切に変更してください。
コンパイラエラーメッセージ:CS1928: 「System.Web.Mvc.HtmlHelper」 は「EnumDropDownListFor」と最高の拡張 方法過負荷 「LIMM.Web.HtmlHelpers.HtmlDropDownExtensions.EnumDropDownListFor(システムの定義が含まれていません。 .Web.Mvc.HtmlHelper、 System.Linq.Expressions.Expression>、 System.Collections.Generic.IDictionary)」もちろん、私はこの方法を正しくが、そうグーグルを延長していないよ、いくつかの 無効な引数
を持っていますこれを達成する方法を見つけるのは私の友人ではありません。ちょっとした助けに感謝します。
ありがとうございました。
UPDATE:ビューにコードを入力すると、intellisenseは私に両方のオーバーロードを与えます。アプリケーションを実行すると、エラーが発生します。
を使用してステートメントを追加することを確認しましたあなたの拡張メソッドを見つける方法を知っているあなたのビューに? –
あなたはこの質問を見ましたか? http://stackoverflow.com/questions/7371652/custom-helper-in-asp-net-mvc3 私はそれが役に立ちそうです。 – AnarchistGeek
@ M.Babcock:当然私はやった:)私は元の方法がうまくいったと言ったように、それは問題を抱えている過負荷です。 –