我正在创建一个FormBuilder类,我可以根据UI框架进行交换,因此我使用实例方法而不是其他示例中的静态扩展方法。为了创建TextBoxFor
实现,我正在尝试以下方法:
public class BootstrapFormBuilder<TModel> where TModel : class
{
private readonly HtmlHelper<TModel> htmlHelper;
private readonly TextWriter writer;
public BootstrapFormBuilder(HtmlHelper<TModel> htmlHelper, TextWriter writer)
{
this.htmlHelper = htmlHelper;
this.writer = writer;
}
public void TextBoxFor<TModel, TProperty>(Expression<Func<TModel, TProperty>> expression, bool required = false)
{
var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
//other stuff
}
}
然而,在FromLambdaExpression
我收到以下错误:
无法从用法推断出方法'ModelMetadata.FromLambdaExpression(Expression&gt;,ViewDataDictionary)'的类型参数。尝试明确指定类型参数。
作为旁注,Resharper警告我,TModel的使用似乎与先前的使用重复。
如何编译元数据行?我需要它来提取属性名称和值。