私はこのようなHtmlHelperを持っています:(明確にするために簡略化されています)
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。しかし、それが戻ったときにint、Html.HiddenForこのエラーをトリガーします。
テンプレートは、フィールドアクセス、プロパティアクセス、単一次元配列インデックス、または単一パラメーターのカスタムインデクサー式でのみ使用できます。
問題が何であるかは正確にはわかりませんが、これと関係があるのではないかと思いexpressionIdます。デバッグモードで検査すると、式がm => Convert(m.Id)期待どおりではなく、次のようになっていることがわかりm => m.Idます。
私を悩ませているのは、MyHelperとまったく同じ引数タイプを受け取っていることHiddenForです。では、なぜ私はその議論を再通過できないのですか?
私は何をすべきか?
PS
私はnull許容式をMyHelperに渡していません(これが答えである他のいくつかの質問を見ました)