2013-04-24 24 views
3

我在嘗試編寫一個html助手,我想在其中遍歷一個已知類型的屬性,這是一個通用列表,並輸出所需的HTML內容。以下是我如何構建視圖模型以確保任何視圖模型符合助手的大綱;在html幫助器中從視圖模型訪問泛型集合

接口定義:

public Interface ITheViewModelInterface<T> where T : class 
{ 
    IEnumerable<T> Items { get; set; } 
} 

混凝土抽象接口實現(這樣我可以定義默認值):

public abstract class TheConcreteViewModelImplementation<T> : IViewModelInterface<T> where T : class 
{ 
    public virtual IEnumerable<T> Items { get; set; } 
} 

視圖模型:

public class TheViewModel : TheConcreteViewModelImplementation<MyListType> 
{ 

} 

什麼是幫助者的定義,使我可以訪問基類中正確類型的項目列表?我不完全確定在這個實例中需要強類型助手,但是如何在助手調用中顯式傳遞項類型?

+0

有你看着使用[顯示模板(http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-1-introduction.html)代替? – levelnis 2013-04-24 13:16:21

+0

@levelnis,沒有我沒有看過任何深度的顯示模板。你認爲這種方法會更適合我的要求嗎? – MaRk 2013-04-24 13:43:01

+0

我認爲這可能相當不錯。您需要在Views \ Shared \ DisplayTemplates中創建一個與其代表的類型名稱相同的模板(例如'MyListType.cshtml'),然後調用'Html.DisplayFor(m => m.Items)'來渲染你的物品了。 – levelnis 2013-04-24 13:50:06

回答