2011-01-27 77 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); 

會給你使用拉姆達的評估模型實例的值。