我想要一个在 Asp.net MVC 2 中使用 Default Modelbinder 的不同(派生)对象类型的列表。
我有以下视图模型:
public class ItemFormModel
{
[Required(ErrorMessage = "Required Field")]
public string Name { get; set; }
public string Description { get; set; }
[ScaffoldColumn(true)]
//public List<Core.Object> Objects { get; set; }
public ArrayList Objects { get; set; }
}
并且该列表包含不同派生类型的对象,例如
public class TextObject : Core.Object
{
public string Text { get; set; }
}
public class BoolObject : Core.Object
{
public bool Value { get; set; }
}
不管我是使用 List 还是 ArrayList 实现,所有的东西都在表单中很好地搭建起来,但是当回发到 ActionResult 时,modelbinder 不会为我解析派生对象类型属性。
什么可能是 Viewmodel 结构处理不同对象类型列表的好解决方案?为每种对象类型(例如 List、List 等)提供一个额外的列表对我来说似乎不是一个好的解决方案,因为这在构建视图模型并将其映射回域模型时都会产生很多开销。
考虑在自定义模型绑定器中绑定所有属性的另一种方法,我怎样才能在此处使用数据注释方法(验证所需属性等)而无需大量开销?