通过ajax调用传递自定义模型*和List <custclass> *

时间:2016-06-07 04:03:06

标签: c# ajax jsonresult

我在将json字符串传递给控制器​​中的jsonResult时遇到了一些麻烦。除了List<CustClass>总是返回默认空列表时,所有的第一级变量都很好,因为它应该填充对象列表(List&lt;&gt;) 我过去了。

ajax调用看起来像是:

var model = {
    Id: id,
    Name: name,
    Items: [{
        Name: itemName[0],
        Color: itemColor[0]
    },{
        Name: itemName[1],
        Color: itemColor[2]
    }]
};

$.ajax({
    url: "/@path",
    type: "POST",
    data: JSON.stringify(model),
    dataType: "json",
    contentType: "application/json; charset=utf-8",
    cache: false,
    traditional: true
});

我的C#模型沿着

的方向看
public class MyModel
{
    public int Id { get; set; }
    public string Name { get; set; }

    public class Item {
        public string Name { get; set; }
        public string Color { get; set; }
    }
    public List<Item> Items = new List<Item>();
}

结果:

[HttpPost]
public JsonResult MyResult(MyModel model)
{
    // Do Stuff
}

我在这里做错了什么?这甚至可以吗?

1 个答案:

答案 0 :(得分:1)

不要实例化您的列表以正确映射它。由于模型的绑定发生在类的实例化之后。

public class MyModel
{
    public int Id { get; set; }
    public string Name { get; set; }

    public class Item {
        public string Name { get; set; }
        public string Color { get; set; }
    }
    public List<Item> Items {get; set;}
}