将一组Javascript类传递给MVC控制器?

时间:2013-05-29 22:11:32

标签: javascript ajax asp.net-mvc json

我正在尝试将一系列服务传递给我的控制器。 我已经尝试了一些不同的方法来使它工作,在转到控制器之前序列化数据,序列化每个服务,只有似乎工作的东西是将控制器参数更改为字符串和序列化数组,然后使用JsonConvert,但我' d而不是那样做。

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

有什么想法吗?

的Javascript


function ServiceItem() {
    this.ServiceProviderID = 'all';
    this.ServiceID = '';
}

var selecteditems= (function () {

    var services = new Array();

    return {
       all: function() { 
           return services; 
       },
       add: function(service) {
           services.push(service);
       }
    };

})();

var reserved = [];
$.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({
           type: "GET",
           url: actionurl,
           data: da,
           dataType: "json",
           async: true,
           success: function (d) {
               if (typeof (done) == 'function') {
                   var str = JSON.stringify(d);
                   done(JSON.parse(str));
               }
           }
       });
};


控制器

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

自定义对象

public class CustomObject
{
   public Guid ServiceID {get;set;}
   public Guid? ServiceProviderID {get;set;}
}

1 个答案:

答案 0 :(得分: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));
               }
           }
       });