不是重复的,请参阅附加说明
我想绑定如下模型设置
public class Shop{
public string Name {get;set;}
public ICollection<Product> Products {get;set;} //Product is abstract
}
public abstract class Product{
public string Name {get;set;}
}
public class ProductA : Product{
public string foo {get;set;}
}
public class ProductB :Product{
public string bar {get;set;}
}
像这样的控制器
public ActionResult(){
Shop model = ShopFactory.GetShop();
return View(model);
}
[HttpPost]
public ActionResult(Shop model){
//....
}
我正在使用BeginCollectionItem绑定集合,但是在发布表单时出现问题,因为它无法创建抽象类 - 即 Shop.Products 中的对象
我已经查看了DefaultModelBinder
要覆盖的子类,CreateModel
但是 CreateModel 永远不会使用参数调用modeltype = Product
,只有modeltype = Shop
如何创建将绑定具有抽象集合作为属性的对象的 ModelBinder?
澄清
这个问题不是重复的,因为我们不是在处理抽象模型,我们正在处理一个具有抽象对象集合的模型,这在模型绑定系统中经历了一个单独的过程。