是否可以传递派生类型,其中基类型应该是强类型视图?
I.e
其中“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个观点?
答案 0 :(得分:1)
我认为(但不确定)这与Covariance有关。
我是如何创建一个强类型的viewData,例如:
public class YourViewData: System.Web.Mvc.ViewDataDictionary
{
public IMyList TheList { get; set; }
}
然后,您可以制作一个名为
的ViewPagereturn 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;。