【发布时间】:2012-05-10 11:59:33
【问题描述】:
我有一个像这样的 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(我已经看到其他一些问题的答案)
【问题讨论】:
标签: .net asp.net-mvc-3 html-helper