将模型传递给视图时可以放弃吗?

时间:2012-10-28 21:37:38

标签: c# asp.net-mvc

假设我有两个类一个基类:

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);

我怎样才能做到这一点?

由于

2 个答案:

答案 0 :(得分:2)

假设您没有在页面上修改模型集合,那么您的页面不应该IList<T>。相反应该采用IEnumerable<T>

@model IEnumerable<BaseModel>

这应该照顾好事情。

答案 1 :(得分:0)

您也可以使用KnownType:

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

希望这有帮助。