.NET MVC接受列表<;t>;使用JSON和ExtJS 4.1.1时作为参数

.NET MVC接受列表<;t>;使用JSON和ExtJS 4.1.1时作为参数,json,list,asp.net-mvc-4,extjs4,Json,List,Asp.net Mvc 4,Extjs4,我试图向.NETMVC控制器发出Ajax请求。当我在控制器代码中放置断点时,我注意到数据为空。我希望它有数据 ExtJS代码: var paramsList = []; console.log(paramsList); for (var i = 0; i < dropData.records.length; i++) { if (dropData.records[i].data.Conflicts.indexOf('This Camp' == -1)) { //ad

我试图向.NETMVC控制器发出Ajax请求。当我在控制器代码中放置断点时,我注意到数据为空。我希望它有数据

ExtJS代码:

var paramsList = [];
console.log(paramsList);
for (var i = 0; i < dropData.records.length; i++) {
    if (dropData.records[i].data.Conflicts.indexOf('This Camp' == -1)) {
        //add this cabin to the parameters object
        //idCampEventCabin = 0 tells the server to insert a new CampEventCabin
        paramsList.push({ idCampEventCabin: 0, Abbreviation: dropData.records[i].data.Abbreviation, Accommodations: dropData.records[i].data.Accommodations, Capacity: dropData.records[i].data.Capacity, idCabin: dropData.records[i].data.idCabin, Level: dropData.records[i].data.Level, Name: dropData.records[i].data.Name, Number: dropData.records[i].data.Number, Type: dropData.records[i].data.Type, idCampEvent: form.getIdCampEvent() });
    }
}

console.log(paramsList);
console.log(Ext.JSON.encode(paramsList));
if (params.length > 0) {
    //post 
    Ext.Ajax.request({
        url: '/CampEvent/UpsertCampEventCabins',
        method: 'POST',
        params: Ext.JSON.encode(paramsList),
        success: function (response, request) {
            var res = Ext.JSON.decode(response.responseText)
            if (res.success == true) {
                console.log('success');
                thisController.refreshCampEventCabinsForm(form);
            }
            else {
                Ext.Msg.alert('Add CampEventCabins Failed', res.message);
            }
        },
        failure: function (response, opts) {
            Ext.Msg.alert('Error', '<p>There was an error trying to save the record:</p><br /><p>The status code was: ' + response.status + '</p><br/><p>The error occurred in the function onMainTabCampEventCabinsFormRender()<p>');
        }


    });
}
我注意到的一件奇怪的事情是,当我使用Chrome的开发工具检查表单数据时,JSON字符串的末尾有一个额外的冒号。像这样:

[{"idCampEventCabin":0,"Abbreviation":"BH","Accommodations":null,"Capacity":10,"idCabin":2,"Level":"","Name":"Blackhawk","Number":"E2","Type":"Boys","idCampEvent":2},{"idCampEventCabin":0,"Abbreviation":"CH","Accommodations":null,"Capacity":9,"idCabin":3,"Level":"","Name":"Chinook","Number":"D1","Type":"Girls","idCampEvent":2}]:
我希望控制器接受JSON数据作为CampEventCabin的一些集合。我试过“列表”、“IList”、“IEnumerable”都没用。我还尝试过传递params对象而不进行编码


我做错了什么?

您的代码似乎只是好的。只需检查控制器流。根据我的理解,作为ExtJS的一部分,您编写的所有代码都是正确的

试一试 公共JsonResult UpsertCampEventCabins(字符串模型)

然后使用json解析器在控制器端进行操作


谢谢

这很有效。我添加了一个函数“private static T Deserialize(string json)”,以便将数据返回到对象集合中。
[{"idCampEventCabin":0,"Abbreviation":"BH","Accommodations":null,"Capacity":10,"idCabin":2,"Level":"","Name":"Blackhawk","Number":"E2","Type":"Boys","idCampEvent":2},{"idCampEventCabin":0,"Abbreviation":"CH","Accommodations":null,"Capacity":9,"idCabin":3,"Level":"","Name":"Chinook","Number":"D1","Type":"Girls","idCampEvent":2}] 
[{"idCampEventCabin":0,"Abbreviation":"BH","Accommodations":null,"Capacity":10,"idCabin":2,"Level":"","Name":"Blackhawk","Number":"E2","Type":"Boys","idCampEvent":2},{"idCampEventCabin":0,"Abbreviation":"CH","Accommodations":null,"Capacity":9,"idCabin":3,"Level":"","Name":"Chinook","Number":"D1","Type":"Girls","idCampEvent":2}]: