[英]Strongly typed views
是否可以在期望基本类型为强类型视图的地方传递派生类型?
即
其中“列表”视图继承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和NewsList:BaseList
可以正常编译,但是会遇到有关不同模型类型的运行时错误。
如果无法做到这一点,而不是不创建视图,最好的方法是什么?
我认为(但不确定)这与Covariance有关 。
我这样做的方法是创建一个强类型的viewData,例如:
public class YourViewData: System.Web.Mvc.ViewDataDictionary
{
public IMyList TheList { get; set; }
}
然后,您可以像这样创建一个ViewPage
return View("List", new YourViewData(){TheList = new ProductList(){abunchOfItems});
免责声明:所有手绘代码
您的问题尚不清楚,但是我想这与您在模型中具有IList <Base>以及您要传递IList <Derived>有关。 这是不可能的,但是在C#4中,您可以传递IEnumerable <Derived>而不是IEnumerable <Base>。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.