2011-12-07 40 views
1

我发现我的助手属性,我认为会给我访问我的模型的属性,但我希望获得模型本身的一个实例。我有一个强类型模型的观点。模型的一个属性是其他模型(TestModel)的集合。我想以标准方式呈现集合中的每个项目。所以,我的视图代码看起来像这样。从MVC3助手获取强类型模型

@foreach(var testModel in @Model.Items){ 
    @Html.DisplayViewerFor(@testModel) 
} 

我的助手看起来像这样。

public static MvcHtmlString DisplayViewerFor(this HtmlHelper<TestModel> helper, Expression<Func<TestModel>> expression, bool rightAligned = true) { 
     var modelData = helper.ViewData; 
     var prop = modelData[""]; 
     var outterDiv = new TagBuilder("div"); 
     outterDiv.AddCssClass(rightAligned ? "item-display-right" : "item-display"); 

     //Create other markup using modelData here 
     //Would prefer to use an instance of TestModel 


     return new MvcHtmlString(outterDiv.ToString(TagRenderMode.EndTag)); 
    } 

回答

1

这听起来像你想要一个值,而不是一个表达式。

扩展非通用HtmlHelper类,并将原始TestModel实例作为参数。

如果您想查找属性名称,只需要一个表达式树。

+0

这回答的不仅仅是我关于我遇到的许多问题的这个问题。我需要在表达式树上找到更多信息。我想我可以找到这个问题的解决方案,更多的答案。谢谢@SLaks! –