2013-04-24 78 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

回答