0

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>();
    }
}

Object4 とObject5のFiltersリストはバインドされていますが、Object1FiltersリストとObject2Object3Filtersリストバインドされていません。または、正しい値が入力されていても、入力されていない可能性があります。

したがって、空でないFilterSetのすべてのFilters兄弟は、単なる空のリストです。

この奇妙な問題を引き起こしているのはJSオブジェクトではないようです。私はそれがモデルの何かだと思います。モデルに欠けているものは何ですか? それとも一般的に何が悪いのですか?

4

1 に答える 1

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>();
    }
}
于 2013-11-08T22:59:55.100 に答える