3

我正在尝试将一系列服务传递给我的控制器。我已经尝试了很多不同的方法来让它工作,在进入控制器之前序列化数据,序列化每个服务,似乎唯一可行的是将控制器参数更改为字符串和序列化数组,然后使用 JsonConvert,但我我宁愿不那样做。

使用指定的代码,我在列表中获得了正确数量的项目,但它们都包含一个带有空行会的服务 ID,并且服务提供者 ID 为空。

有任何想法吗?

Javascript

功能服务项目(){
    this.ServiceProviderID = '全部';
    this.ServiceID = '';
}

var selecteditems=(函数(){

    var services = new Array();

    返回 {
       全部:函数(){
           退货服务;
       },
       添加:功能(服务){
           services.push(服务);
       }
    };

})();

var 保留 = [];
$.each(selecteditems.all(), function(index, item){
   reserved.push({ ServiceID: item.ServiceID, ServiceProviderID: item.ServiceProviderID});
});

getData('Controller/GetMethod', { items: reserved }, function(result) {
});

var getData = function (actionurl, da, done) {
       $.ajax({
           类型:“获取”,
           网址:动作网址,
           数据:大,
           数据类型:“json”,
           异步:真,
           成功:功能(d){
               if (typeof (done) == 'function') {
                   var str = JSON.stringify(d);
                   完成(JSON.parse(str));
               }
           }
       });
};


控制器

public JsonResult GetMethod(List<CustomObject> items)
{
}

自定义对象

公共类 CustomObject
{
   公共 Guid ServiceID {get;set;}
   公共指南?ServiceProviderID {get;set;}
}
4

1 回答 1

3

设置内容类型并使用 POST 而不是 GET(因为它是复杂类型对象的列表)。也使用 HttpPost 属性标记您的操作。

看看这是否有效: -

 $.ajax({
           type: "POST",
           url: actionurl,
           data: JSON.stringify(da),
           dataType: "json",
           contentType: 'application/json',
           async: true,
           success: function (d) {
               if (typeof (done) == 'function') {
                   var str = JSON.stringify(d);
                   done(JSON.parse(str));
               }
           }
       });
于 2013-05-29T22:15:16.600 回答