我正在尝试将一系列服务传递给我的控制器。 我已经尝试了一些不同的方法来使它工作,在转到控制器之前序列化数据,序列化每个服务,只有似乎工作的东西是将控制器参数更改为字符串和序列化数组,然后使用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;} }
答案 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));
}
}
});