将对象数组发送到mvc控制器

时间:2013-04-08 11:38:41

标签: jquery asp.net-mvc-4

我在mvc4中使用ajax post到controller,

我的代码控制器是:

[HttpPost]
public JsonResult UpdateAllSettings(int PresetID,List<CustomerAjaxServiceSettingPoco> customerServiceSettings)
{

和CustomerAjaxServiceSettingPoco是:

 public class CustomerAjaxServiceSettingPoco
    {
        public int ID { get; set; }
        public string ClientSettingValue { get; set; }
    }

我的javascript是:

 var customerServiceSettings = new Array();
        $('.settings_user').each(function () {
            customerServiceSettings[customerServiceSettings.length] = { 'ID': $(this).data('settingsid'), 'ClientSettingValue': $(this).val() };
        });



$.ajax({
        url: '/Services/UpdateAllSettings?PresetID=' + PresetID,
        type: 'POST',
        data: { 'customerServiceSettings':JSON.stringify( customerServiceSettings) },
        traditional: true,
        dataType: 'json',
        success: function (result) {
            do...
        }
    });

仍处于调试模式我得到“customerServiceSettings count = 0”和“PresetID = 1” 我究竟做错了什么 ? 火灾中的帖子来源是: 参数 customerServiceSettings [{“ID”:1,“ClientSettingValue”:“False”},{“ID”:2,“ClientSettingValue”:“False”},{“ID”:3,“ClientSettingValue”:“False”}, { “ID”:4 “ClientSettingValue”: “错误”},{ “ID”:5 “ClientSettingValue”: “正确”},{ “ID”:6, “ClientSettingValue”: “正确”},{” ID “:9”,ClientSettingValue “:” 正确 “},{” ID “:10”,ClientSettingValue “:” 错误 “},{” ID “:11”,ClientSettingValue “:” 正确 “},{” ID” :12, “ClientSettingValue”: “正确”},{ “ID”:13, “ClientSettingValue”: “错误”},{ “ID”:14, “ClientSettingValue”: “正确”},{ “ID”:15 “ClientSettingValue”: “正确”},{ “ID”:67, “ClientSettingValue”: “”},{ “ID”:68, “ClientSettingValue”: “”},{ “ID”:69, “ClientSettingValue” : “”},{ “ID”:70, “ClientSettingValue”: “”},{ “ID”:21, “ClientSettingValue”: “正确”},{ “ID”:22, “ClientSettingValue”: “真” },{ “ID”:23, “ClientSettingValue”: “错误”},{ “ID”:24, “ClientSettingValue”: “正确”},{ “ID”:25, “ClientSettingValue”: “错误”}, { “ID”:27, “ClientSettingValue”: “错误”},{ “ID”:28, “ClientSettingValue”: “错误”},{ “ID”:71, “ClientSettingValue”: “”},{“ID “:72,” ClientSettingValue “:”“}] 资源 customerServiceSettings =%5B%7B%22ID%22%3A1%2C%22ClientSettingValue%22%3A%22False%22%7D%2C%7B%22ID%22%3A2%2C%22ClientSettingValue%22%3A%22False%22%7D %2C%7B%22ID%22%3A3%2C%22ClientSettingValue%22%3A%22False%22%7D%2C%7B%22ID%22%3A4%2C%22ClientSettingValue%22%3A%22False%22%7D%2C %7B%22ID%22%3A5%2C%22ClientSettingValue%22%3A%22True%22%7D%2C%7B%22ID%22%3A6%2C%22ClientSettingValue%22%3A%22True%22%7D%2C%7B %22ID%22%3A9%2C%22ClientSettingValue%22%3A%22True%22%7D%2C%7B%22ID%22%3A10%2C%22ClientSettingValue%22%3A%22False%22%7D%2C%7B%22ID %22%3A11%2C%22ClientSettingValue%22%3A%22True%22%7D%2C%7B%22ID%22%3A12%2C%22ClientSettingValue%22%3A%22True%22%7D%2C%7B%22ID%22 %3A13%2C%22ClientSettingValue%22%3A%22False%22%7D%2C%7B%22ID%22%3A14%2C%22ClientSettingValue%22%3A%22True%22%7D%2C%7B%22ID%22%3A15 %2C%22ClientSettingValue%22%3A%22True%22%7D%2C%7B%22ID%22%3A67%2C%22ClientSettingValue%22%3A%22%22%7D%2C%7B%22ID%22%3A68%2C %22ClientSettingValue%22%3A%22%22%7D%2C%7B%22ID%22%3A69%2C%22ClientSettingValue%22%3A%22%22 %7D%2C%7B%22ID%22%3A70%2C%22ClientSettingValue%22%3A%22%22%7D%2C%7B%22ID%22%3A21%2C%22ClientSettingValue%22%3A%22True%22%7D %2C%7B%22ID%22%3A22%2C%22ClientSettingValue%22%3A%22True%22%7D%2C%7B%22ID%22%3A23%2C%22ClientSettingValue%22%3A%22False%22%7D%2C %7B%22ID%22%3A24%2C%22ClientSettingValue%22%3A%22True%22%7D%2C%7B%22ID%22%3A25%2C%22ClientSettingValue%22%3A%22False%22%7D%2C%7B %22ID%22%3A27%2C%22ClientSettingValue%22%3A%22False%22%7D%2C%7B%22ID%22%3A28%2C%22ClientSettingValue%22%3A%22False%22%7D%2C%7B%22ID %22%3A71%2C%22ClientSettingValue%22%3A%22%22%7D%2C%7B%22ID%22%3A72%2C%22ClientSettingValue%22%3A%22%22%7D%5D

1 个答案:

答案 0 :(得分:0)

尝试添加 contentType stringify整个对象,如下所示:

$.ajax({
        type: 'POST',
        dataType: 'json',
        url: '...',
        data: JSON.stringify({ steps: ['1', '2', '3'] }),
        contentType: 'application/json; charset=utf-8',
});