私はasp.netコアで遊んでいて、私のヘルパーをそれに移行しようとしていました。自分のヘルパーをビューに注入しましたが、デフォルトのIHtmlHelperにアクセスする必要がありました(私はHtmlHelperを拡張したくありません)。IHtmlHelperリファレンスのカスタムカミソリヘルパー
私はIoCから具体的なIHtmlHelperを取得するために、このようなコンストラクタを構築しました。
public FWHtmlHelper(IHtmlHelper htmlHelper)
{
this._htmlHelper = htmlHelper;
}
事は、私がヘルパーにアクセスしようとしたとき、私はこのエラーを得た、次のとおりです。
InvalidOperationException: Must call 'Contextualize' method before using this HtmlHelper instance.
だから、どのように私は自分のヘルパーを作成し、表示HTMLヘルパーのインスタンスにアクセスすることができますか?
*編集、要求通り:
が
services.AddTransient(typeof(IFWHtmlHelper<>), typeof(FWHtmlHelper<>));
ビュー次に
@inject IFWHtmlHelper<TModel> FWHtml
にそれを注入し、私は私のヘルパー
public static TagBuilder Example<TModel, TValue>(this IFWHtmlHelper<TModel> fwHelper, Expression<Func<TModel, TValue>> expression)
{}
の拡張子を作成したコンテナに追加
を望んでいるようにそれがアップ配線されますので、プライベートIHtmlHelperの上でそのコンテクスチュアリゼーションを渡すにはどのようにこのクラスをインスタンス化/登録していますか?この問題を再現するサンプルコードを提供できますか? –
さて、IoCに "services.AddTransient(typeof(IFWHtmlHelper <>)、typeof(FWHtmlHelper <>));というインターフェイスを追加します。それをビューに挿入するIFWHtmlHelper FWHtml。次に、私はヘルパーの拡張をpublic static TagBuilder Example で作成しました(このIFWHtmlHelper fwHelper、Expression >式){} –
エラーとして「IHtmlHelper」は'Contextualize'メソッドを呼び出すことによって提供される' ViewContext'を定義します。 'IHtmlHelper'の上に直接拡張機能を作成したり、タグヘルパーを作成してみませんか? –