webapi获胜';t使用$.param反序列化字符串数组
本文关键字:param 反序列化 字符串 数组 使用 获胜 webapi | 更新日期: 2023-09-27 18:20:32
我正在尝试调用一个ASP.NET WebAPI方法,并通过类似于$.ajax
POST请求的GET请求向它传递一个序列化的JavaScript对象。它运行良好,只是当JavaScript对象的Networks值为null时,它会像/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);
所以为了解决这个问题,我将字符串数组更改为一个简单的字符串,并对其进行.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(',');