【问题标题】:JSON object(s) not binding to ModelJSON 对象未绑定到模型
【发布时间】:2013-11-04 22:46:42
【问题描述】:

JSON 中的某些对象未绑定到模型。

JS

var filterSet = {
    "Filters":[Object1],
    "FilterSets":[{
        "Filters":[Object2,Object3],
        "FilterSets":[{
            "Filters":[Object4,Object5],
            "FilterSets":[]
        }]
    }]
}
$.ajax({
    url: '/ControllerName/GetData',
    dataType: 'json',
    data: JSON.stringify({
        filterSet: filterSet
    }),
    type: 'POST',
    contentType: 'application/json; charset=utf-8'
}).done(function (result) {
    ...
});

控制器

public JsonResult GetData(FilterSet filterSet)
{
    ....

    return Json(data);
}

型号

public class Filter
{
    public string Field1 { get; set; }
    public string Field2 { get; set; }
    ...

    public Filter()
    {
        ...
    }
}

public class FilterSet
{
    public List<Filter> Filters { get; set; }
    public List<FilterSet> FilterSets { get; set; }

    public FilterSet()
    {
        Filters = new List<Filter>();
        FilterSets = new List<FilterSet>();
    }
}

Object4Object5Filters 列表已绑定,但 Object1 的 Filters 列表 和带有 Object2Object3Filters 列表不是。或者它们可能是但没有填充正确的值。

因此,非空 FilterSets 的所有 Filters 兄弟姐妹都只是空列表。

似乎不是 JS 对象导致了这个奇怪的问题。我认为这与模型有关。模型中缺少什么?或者一般有什么问题?

【问题讨论】:

标签: json asp.net-mvc-4 model-binding


【解决方案1】:

重命名字段解决了这个问题。也许,复数的字段名与类名太接近了。

public class FilterSet
{
    public List<Filter> FilterList { get; set; }
    public List<FilterSet> FilterSetList { get; set; }

    public FilterSet()
    {
        FilterList = new List<Filter>();
        FilterSetList = new List<FilterSet>();
    }
}

【讨论】:

  • 绞尽脑汁作为一个绑定不起作用,给了我一个想法并重命名一个字段修复它....疯狂。 +1
猜你喜欢
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-06
相关资源
最近更新 更多