假设我有两个类一个基类:
public class BaseModel {
}
还有几个孩子:
public class FooModel : BaseModel {
}
public class BarModel : BaseModel {
}
现在我的观点我希望这样的模型:
@model IList<BaseModel>
这样我就可以在一个页面上编辑这些模型。
然而,当我在动作中传递这些模型的集合时,我得到一个例外:
传递到字典中的模型项是类型的 'System.Collections.Generic.List
1[BarModel]', but this dictionary requires a model item of type 'System.Collections.Generic.IList
1 [BaseModel]'。
像这样:
var models = new List<BaseModel>(){ new BarModel(), new FooModel ()}
return View(models);
我怎样才能做到这一点?
由于
答案 0 :(得分:2)
假设您没有在页面上修改模型集合,那么您的页面不应该IList<T>
。相反应该采用IEnumerable<T>
:
@model IEnumerable<BaseModel>
这应该照顾好事情。
答案 1 :(得分:0)
您也可以使用KnownType:
[Serilizable]
[KnownType(typeof(FooModel))]
[KnownType(typeof(BarModel))]
public class BaseModel
{
}
希望这有帮助。