gpt4 book ai didi

c# - webapi 不会使用 $.param 反序列化字符串数组

转载 作者:行者123 更新时间:2023-11-28 09:03:47 27 4
gpt4 key购买 nike

我正在尝试调用 ASP.NET WebAPI 方法,并通过类似于 $.ajax POST 请求的 GET 请求向其传递序列化的 JavaScript 对象。它工作正常,除非 JavaScript 对象的网络值为空,然后它在 URL 中发送它,如 /api/airings/get-airings?networks= 并且服务器显示字符串[] 具有值为 null 的单个项目!如果我删除 network= 它在服务器上显示为空,正如我所期望的。

因此,看来人们在 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(',');

关于c# - webapi 不会使用 $.param 反序列化字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17375400/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com