PUT 序列化 angular KeyValue 到 ASP.NET KeyValuePair 的正确语法是什么?

What is the correct syntax to PUT serialize angular KeyValue to ASP.NET KeyValuePair?

我试图序列化一个 KeyValue "Array" 以通过 PUT 通过 http 将其发送到我的 asp.net 网络服务器。

Angular 中的函数如下所示:

SortAboutUs(data : KeyValue<number,number>[]) {
    this.dataTransmitter.Put(this.apiUrl+'/api/aboutus/sort', data);    
}

如果我调试以下数据容器,则它看起来像这样:

我的 .net 核心 Web 服务器的控制器中有以下内容

[HttpPut("[action]")]
public ActionResult<bool> Sort(IList<KeyValuePair<int, int>> dto)
{
    return Ok(_aboutUsService.Sort(dto));
}

然而,当我尝试通过 PUT 发送时出现以下错误:

The JSON value could not be converted to System.Collections.Generic.List`1[System.Collections.Generic.KeyValuePair`2[System.Int32,System.Int32]]. Path: $[0] | LineNumber: 0 | BytePositionInLine: 8.

奇怪的是,我已经在另一个旧版本的 .net core 中使用了相同的技术,并且一切似乎都有效。

我还注意到,自 .net core 3.1 起,C# 中的 KeyValue 更改为 KeyValuePair,但在旧版本的 .net core 中,它是 KeyValue。

这是否与我的相关错误有关?

以及如何从 Angular 序列化 KeyValue 以便我的网络服务器可以读取它?

你的对象应该是这样的:-

[
 {
   4: 0
 },
 {
   5: 1
 },
 {
   6: 2
 }
]

我能够通过创建自己的 KeyValue Class 解决问题,如下所示:

public class KeyValue<K,V>
{
    public K Key { get; set; }
    public V Value { get; set; }
}

在此之后我的控制器方法现在看起来像这样:

[HttpPut("[action]")]
public ActionResult<bool> Sort([FromBody] IList<KeyValue<int, int>> dto)
{
    return Ok(_aboutUsService.Sort(dto));
}

感谢这种方法,控制器能够通过 PUT 接收从 Angular 发送到我的网络服务器的键值数组...