Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# API入口点无法识别的JSON(TypeScript)元组数组_C#_Asp.net_Angular_Typescript_Api - Fatal编程技术网

C# API入口点无法识别的JSON(TypeScript)元组数组

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

我有一个angular应用程序,它调用用Asp.net c编写的后端。后端已经被移动应用程序使用,但一个入口点在被角度应用程序击中时无法正常工作

我序列化了的一个元组数组并将其发送到API,但是当API入口点被命中时,似乎没有接收到元组数组的数据

我已经查看了我的元组数组,数据被正确地序列化到json客户端,但没有被服务器端接收到

以下是我的c API中的入口点定义:

 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更有意义

您也可以考虑将一个对象作为列表的一个属性,而不是张贴列表本身:如果需要,这将给您灵活地向对象添加更多的数据,而不需要改变更多的代码。