2011-01-27 74 views
2

在htmlhelper中使用下面的代码给了我一些元数据。 它甚至有容器类型。 我想要的是容器实例。在表达式中从HtmlHelper获取对象实例

x => x.FirstName 

我想获得x实例。

有没有办法做到这一点?

public static MvcHtmlString DisplayEditorFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string templateName, string htmlFieldName, object additionalViewData) 
    { 
     var result = ModelMetadata.FromLambdaExpression(expression, html.ViewData); 
     ... 
    } 

结果有类型和其他信息的主机,但没有实例。 表达式本身必须在身体中绑定。我怎么挑逗它?

回答

4

这很愚蠢。

html.Model contains the object instance. 

而且

var value = expression.Compile().Invoke(html.ViewData.Model); 

会给你使用拉姆达的评估模型实例的值。