我正在尝试调用ASP.NET WebAPI方法,并通过类似于$.ajax
POST请求的GET请求将其传递给序列化的JavaScript对象。除了当JavaScript对象具有网络的空值,然后它在像/api/airings/get-airings?networks=
这样的URL中发送它并且服务器将字符串[]显示为具有值为null的单个项目时,它工作正常。如果我删除network=
它在服务器上显示为null,就像我期望的那样。
所以,似乎人们在jQuery中请求了关于这种行为的票证,但我想知道如果不使用插件或重写$ .param逻辑或搞乱WebAPI ModelBinder我可以做什么。
http://bugs.jquery.com/ticket/8653
http://bugs.jquery.com/ticket/1814
public class ApiGetAiringsRequest
{
public DateTime? DateStart { get; set; }
public DateTime? DateFinish { get; set; }
public string[] Networks { get; set; }
}
public HttpResponseMessage GetAirings([FromUri] ApiGetAiringsRequest request )
...
document.location.href = "/api/airings/get-airings?" + $.param(request);
答案 0 :(得分:0)
因此,为了解决这个问题,我将字符串数组更改为一个简单的字符串,并在其上执行.split。
var serialize = function(obj)
{
var str = [];
for (var p in obj)
{
if (obj[p])
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
return str.join("&");
};
$.get('/api/airings/get-airings?' + serialize(request));
C#
var networks = (request.Networks??"").Split(',');