代码之家  ›  专栏  ›  技术社区  ›  BenAlabaster

如何从通用列表创建视图?

  •  3
  • BenAlabaster  · 技术社区  · 16 年前

    我遇到了几个问题:

    • 我不知道如何让view.aspx理解t

    有没有一种我忽略的简单方法可以做到这一点?我不想为我想使用的每种类型的列表都使用不同的aspx,毕竟我只是在生成一个项目。因此,有15个不同的视图来覆盖我需要使用的每种类型的列表是一种浪费。

    任何想法或解决方案都将不胜感激。

    3 回复  |  直到 16 年前
        1
  •  2
  •   John MacIntyre    16 年前

    如果您的名称总是匹配的(CustomObject1,那么我想呈现部分CustomObject1.ascx),那么您可以使用类型名称。所以:

    void MyMethod(List<T> items)
    {
        foreach(T item in items)
        {
            Html.RenderPartial(item.GetType().Name, item);
        }
    }
    
        2
  •  2
  •   Stroboskop    14 年前

    安东尼第一个答案的例子:让列表内容负责呈现自己,例如。

    interface IHtmlRenderable
    {
        void RenderHtml();
    }
    
    void MyMethod(List<T> items) //where T implements IHtmlRenderable
    {
        foreach(T item in items) ((IHtmlRenderable)item).RenderHtml();
    }
    

        3
  •  1
  •   AnthonyWJones    16 年前

    在我看来,您首先需要使用一个对所有CustomObjects都通用的接口。你的观点将基于 List<IMyCommonInterface> .

    至于包含正确的ascx,我不确定即使是通用系统也会如何解决这个问题。

    • 让ICommonInterface公开一个指定要使用的自定义控件的属性。简单,但不知怎么的,感觉又错又脏。