我有一个像这样的 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
. 那么为什么我不能重新提出这个论点呢?
我应该怎么办?
附言
我没有将任何可为空的表达式传递给 MyHelper (我已经看到了其他一些问题的答案)