私はこのようなのHtmlHelperを持っています(わかりやすくするために簡略化)HtmlHelper内からHtml.HiddenForを呼び出すことはできません。どうして?
public static MvcHtmlString MyHelper<TModel>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, object>> expressionId)
{
// do something here
tagBuilder.Append(htmlHelper.HiddenFor(expressionId));
// do something here
}
何が起こることはexpressionId
がstring
を返したときにコードが正常に動作していることです。しかし、それは、Html.HiddenFor
トリガーこのエラーint
を返す場合:
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions.
を私は問題がある正確に把握していないが、私はそれがこれとは何かを持っている疑いがある: 私はデバッグモードでexpressionId
を検査するとき、私は式がm => m.Id
の代わりにm => Convert(m.Id)
であることがわかります。
MyHelper
は、HiddenFor
とまったく同じ引数型を受け取りました。だから、なぜ私はその議論を唱えることができないのですか?
どうすればよいですか?
PS
私はMyHelperに任意のNULL可能な式を渡していないよ(私はこれが答えだったにいくつかの他の質問を見てきました)
をしかし、これは私がやったまさにです:
object
するのではなく、強く型付けされたヘルパーを使用してみてください! –ああ、あなたの議論は、私が私の答えで言ったことではない、この 'Expression>'のように見えます。私の答えでは、ヘルパーに第二の一般的な議論を追加しました。もっと見る。 –
さて、確認します –