C# API入口点无法识别的JSON(TypeScript)元组数组
我有一个angular应用程序,它调用用Asp.net c编写的后端。后端已经被移动应用程序使用,但一个入口点在被角度应用程序击中时无法正常工作 我序列化了的一个元组数组并将其发送到API,但是当API入口点被命中时,似乎没有接收到元组数组的数据 我已经查看了我的元组数组,数据被正确地序列化到json客户端,但没有被服务器端接收到 以下是我的c API中的入口点定义:C# API入口点无法识别的JSON(TypeScript)元组数组,c#,asp.net,angular,typescript,api,C#,Asp.net,Angular,Typescript,Api,我有一个angular应用程序,它调用用Asp.net c编写的后端。后端已经被移动应用程序使用,但一个入口点在被角度应用程序击中时无法正常工作 我序列化了的一个元组数组并将其发送到API,但是当API入口点被命中时,似乎没有接收到元组数组的数据 我已经查看了我的元组数组,数据被正确地序列化到json客户端,但没有被服务器端接收到 以下是我的c API中的入口点定义: public HttpResponseMessage Xamarin_UpdateStatut([FromRoute] int
public HttpResponseMessage Xamarin_UpdateStatut([FromRoute] int idEvent, [System.Web.Http.FromBody] List<Tuple<int, bool>> listUsersStatut)
{
}
下面是通过chrome控制台发送的元组客户端get:
[[2102,假],[1096,假],[73,假]]
以下是用于将元组数组序列化为Json客户端的代码:
var listUpdate = new Array<[number, boolean]>();
arr.forEach(re => {
let el: [number, boolean] = [re.userId, re.wasThere];
listUpdate.push(el);
});
let body = JSON.stringify(listUpdate);
我在服务器端调试了几次,列表长度是0。在方法定义中,我尝试将从列表接收到的类型更改为Tuple数组服务器端,但没有更改任何内容
在我看来,json输出是正确的,所以我不明白为什么它不工作
非常感谢您的一点帮助:
祝你度过愉快的一天,并提前表示感谢
Lio绑定按名称进行。发件人: MVC将尝试按名称将请求数据绑定到操作参数。MVC将使用参数名及其公共可设置属性的名称查找每个参数的值
为了绑定成功,JSON中的名称必须与C参数的名称相匹配,包括每个参数的属性名称。绑定按名称进行。发件人: MVC将尝试按名称将请求数据绑定到操作参数。MVC将使用参数名及其公共可设置属性的名称查找每个参数的值
为了绑定成功,JSON中的名称必须与C参数的名称相匹配,包括每个参数的属性名称。C中的元组被视为类,而您将客户端模型设置为数组。试着这样做:
var listUpdate = new Array<{item1: number, item2: boolean}>();
arr.forEach(re => {
let el: {item1: number, item2: boolean} = {item1: re.userId, item2: re.wasThere};
listUpdate.push(el);
});
我个人建议使用强类型类而不是元组,这样您的属性名比Item1和Item2更有意义
您也可以考虑将一个对象作为列表的一个属性,而不是张贴列表本身:如果需要的话,这将给您灵活地向对象添加更多的数据,而不需要改变太多的代码。而您正在设置客户端模型,就像它们是阵列一样。试着这样做:
var listUpdate = new Array<{item1: number, item2: boolean}>();
arr.forEach(re => {
let el: {item1: number, item2: boolean} = {item1: re.userId, item2: re.wasThere};
listUpdate.push(el);
});
我个人建议使用强类型类而不是元组,这样您的属性名比Item1和Item2更有意义
您也可以考虑将一个对象作为列表的一个属性,而不是张贴列表本身:如果需要,这将给您灵活地向对象添加更多的数据,而不需要改变更多的代码。