如何将HiddenFor与对象的表达式一起使用

时间:2015-11-06 00:50:53

标签: c# asp.net-mvc asp.net-mvc-4

我有一个创建组件的扩展,在这个组件中我添加了一个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,如果我进行转换,它可能会解析,但是,如何在不编译的情况下进行表达式的转换?我不想每次都编译表达式来获取值。

另一个解决方案可能是使用两个泛型类型的表达式,而不是使用TModelobject的表达式,如下所示:

MyFunction<TColumnModel, TValue>(Expression<Func<TModel, TValue>> expVal

但是,当我调用此方法时,我不知道TValue的类型,这不会有问题,但因为我必须通知TColumModel我必须通知{ {1}}也是。

所以,有两个问题:

有没有办法创建对象表达式的HiddenFor?

我可以调用一个带有两个泛型类型的方法,只传递一个?

由于

0 个答案:

没有答案