2009-09-18 146 views
0

是否有可能传递派生类型,其中基类型预期强类型视图?强类型视图

  1. 产品/列表
  2. 新闻/列表

其中 “列表” 视图继承System.Web.Mvc.ViewPage<Model<BaseList>>

控制器渲染视图,即视图( “目录”,产品列表)


编辑

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

其中产品列表&新闻列表:BaseList

编译罚款,但得到有关不同的模型类型运行时错误。

如果这是不可能的,那么完成这个的最好方法是什么,而不是创建n个视图?

回答

0

你的问题有点不清楚,但我想它与你有一个IList <数据库>在你的模型做的,你想传递一个IList <派生>。这是不可能的,但在C#4中,您可以传递IEnumerable < Derived>而不是IEnumerable < Base>。

1

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

这怎么我做的是创建一个强类型的ViewData例如像这样:

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

然后,您可以让您调用像

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

免责声明一的ViewPage:所有写意代码