2

可以说我有两个类一个基类:

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.IList1[BaseModel]”。

像这样:

var models = new List<BaseModel>(){ new BarModel(), new FooModel ()}
return View(models);

我怎样才能做到这一点?

谢谢

4

2 回答 2

2

假设您没有修改页面上的模型集合,您的页面不应该采用IList<T>. 而是应该采取IEnumerable<T>

@model IEnumerable<BaseModel>

那应该处理好事情。

于 2012-10-28T21:40:50.677 回答
0

您还可以使用 KnownType:

[Serilizable]
[KnownType(typeof(FooModel))]
[KnownType(typeof(BarModel))]
public class BaseModel 
{
} 

希望这可以帮助。

于 2012-10-28T21:50:01.553 回答