簡體   English   中英

MVC 3中的自定義集合模型活頁夾的問題

[英]Issue With Custom Collection Model Binder in MVC 3

我在MVC中建立模型資料夾時遇到問題。

我要定位的操作如下所示:

public ActionResult GetAccounts (ICollection<Account> accounts ){}

我創建了一個自定義模型活頁夾,並使用以下代碼注冊了它:

ModelBinders.Binders.Add(typeof(ICollection<Account>),new CollectionModelBinder());

附加了調試器后,我可以看到正在調用CollectionModelBinder's CreateModel方法。 但是,當執行到達控制器的操作方法時,accounts參數為null。

怎么了

我的模型資料夾看起來像:

public class CollectionModelBinder : DefaultModelBinder
{
    protected override object CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType)
    {
        return new List<Account> {
            new Account {Id = 1}, 
            new Account {Id = 2}, 
            new Account {Id = 3}};
    }
}

更新:

這是DefaultModelBinder.的問題DefaultModelBinder. 調用CreateModel之后,另一個內部方法UpdateCollection被調用,該方法有效地使CreateModel.創建的集合無效CreateModel. 解決方案是推出我自己的IModelBinder.實現IModelBinder. 唯一缺少的唯一參數IModelBinder.BindModelmodelType,這是很容易得到:

public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
    var type = bindingContext.ModelType;
    //...
}

這是DefaultModelBinder.的問題DefaultModelBinder. 調用CreateModel之后,另一個內部方法UpdateCollection被調用,該方法有效地使CreateModel.創建的集合無效CreateModel. 解決方案是推出我自己的IModelBinder.實現IModelBinder. 唯一缺少的唯一參數IModelBinder.BindModelmodelType,這是很容易得到:

public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
    var type = bindingContext.ModelType;
    //...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM