不是重複,請參閱附加澄清MVC模型綁定 - 抽象集合屬性
我想綁定模型建立類似下面的
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
如何創建一個模型綁定器將結合具有抽象集合作爲屬性的對象?
澄清
這個問題是不是因爲我們面對的不是一個抽象的模型,我們正在處理有抽象對象的集合的模式重複,這發生在模型綁定系統的獨立進程。
[MVC 3模型綁定子類型(抽象類或接口)]的可能副本(http://stackoverflow.com/questions/9417888/mvc-3-model-binding-a-sub-type-abstract-類或接口) –
不重複。這個問題有一個抽象對象的集合。該問題的解決方案不起作用。 – MrJD