私はこのような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に渡していません(これが答えである他のいくつかの質問を見ました)