强烈的类型视图

时间:2009-09-18 09:36:05

标签: c# model-view-controller views

是否可以传递派生类型,其中基类型应该是强类型视图?

I.e

  1. 产品/列表
  2. 新闻/列表
  3. 其中“list”视图继承System.Web.Mvc.ViewPage<Model<BaseList>>

    控制器呈现视图,即View(“List”,ProductsList)


    编辑

    return View("List", new Model<ProductsList>());
    Model<T> where T : IMyList 
    ProductsList : BaseList
    NewsList : BaseList
    BaseList : IMyList
    

    其中ProductsList&amp;新闻列表:BaseList

    编译得很好,但是有关不同模型类型的运行时错误。

    如果这不可能,那么实现这一目标的最佳方法是什么,而不是创建n个观点?

2 个答案:

答案 0 :(得分:1)

我认为(但不确定)这与Covariance有关。

我是如何创建一个强类型的viewData,例如:

public class YourViewData: System.Web.Mvc.ViewDataDictionary
{
    public IMyList TheList { get; set; }
}

然后,您可以制作一个名为

的ViewPage
return View("List", new YourViewData(){TheList = new ProductList(){abunchOfItems});

免责声明:所有手绘代码

答案 1 :(得分:0)

你的问题有点不清楚,但我想这与你有一个IList&lt; Base&gt;在您的模型中,您想要传递IList&lt; Derived&gt;。这是不可能的,但在C#4中,您可以传递IEnumerable&lt; Derived&gt;而不是IEnumerable&lt; Base&gt;。