我有一个创建组件的扩展,在这个组件中我添加了一个HiddenFor。
这是代码:
class Test<TModel>
{
protected HtmlHelper<TModel> HtmlHelper { get; set; }
public void MyFunction<TColumnModel>(Expression<Func<TModel, object>> expVal, string name, params Expression<Func<TColumnModel, object>>[] columns)
{
// Make some stuff with columns
var hidden = this.HtmlHelper.HiddenFor(expVal);
}
}
问题是:
当我执行上面的代码时,它会返回以下错误:
模板只能用于字段访问,属性访问, 单维数组索引或单参数自定义索引器 表达式。
好吧,这个错误发生了,因为我试图使用对象的表达式创建一个HiddenFor,如果我进行转换,它可能会解析,但是,如何在不编译的情况下进行表达式的转换?我不想每次都编译表达式来获取值。
另一个解决方案可能是使用两个泛型类型的表达式,而不是使用TModel
和object
的表达式,如下所示:
MyFunction<TColumnModel, TValue>(Expression<Func<TModel, TValue>> expVal
但是,当我调用此方法时,我不知道TValue
的类型,这不会有问题,但因为我必须通知TColumModel
我必须通知{ {1}}也是。
所以,有两个问题:
有没有办法创建对象表达式的HiddenFor?
我可以调用一个带有两个泛型类型的方法,只传递一个?
由于