当前位置:  开发笔记 > 前端 > 正文

复杂复合对象的自定义模型粘合剂帮助

如何解决《复杂复合对象的自定义模型粘合剂帮助》经验,为你挑选了1个好方法。

我正在尝试编写一个自定义模型绑定器,但我很难设法如何绑定复杂的复合对象.

这是我想要绑定的类:

public class Fund
{
        public int Id { get; set; }
        public string Name { get; set; }
        public List FundAllocations { get; set; }
}

这就是我尝试编写自定义绑定器的方式:

public class FundModelBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        throw new NotImplementedException();
    }

    public object GetValue(ControllerContext controllerContext, string modelName, Type modelType, ModelStateDictionary modelState)
    {
        var fund = new Fund();

        fund.Id = int.Parse(controllerContext.HttpContext.Request.Form["Id"]);
        fund.Name = controllerContext.HttpContext.Request.Form["Name"];

        //i don't know how to bind to the list property :(
        fund.FundItems[0].Catalogue.Id = controllerContext.HttpContext.Request.Form["FundItem.Catalogue.Id"];
        return fund;
    }
}

有任何想法吗

谢谢Tony



1> JonoW..:

你真的需要在这里实现自定义ModelBinder吗?默认绑定器可以执行您需要的操作(因为它可以填充集合和复杂对象):

让我们说你的控制器动作如下:

public ActionResult SomeAction(Fund fund)
{
  //do some stuff
  return View();
}

你的HTML包含这个:









默认模型绑定器应该使用FundAllocations列表中的2个项目初始化您的基金对象(我不知道您的FundAllocation类是什么样的,所以我编写了一个属性"SomeProperty").只要确保包含那些"fund.FundAllocations.Index"元素(默认绑定器为它自己使用而查看),当我试图让它工作时,这就得到了我.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有