2011-12-07 39 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! –