gpt4 book ai didi

c# - 附加而不是覆盖 Web API 列表

转载 作者:太空宇宙 更新时间:2023-11-03 13:05:01 25 4
gpt4 key购买 nike

我有一个类的构造函数如下

public SomeClass
{
List<string> MyList;
public SomeClass()
{
this.MyList = new List<string>() { "1","2","3" };
}
}

我的ajax帖子如下:

{MyList:["a","b","c"]}

在我的 Controller 中

public void Post([FromBody]Models.SomeClass example)
{

Debug.WriteLine(example.MyList);
}

输出是:

["1","2","3","a","b","c"]

我预计:

["a","b","c"]

我期望的是发布的内容,而不是附加了发布值的初始值。不确定这里发生了什么,为什么列表的初始状态没有被覆盖?

最佳答案

几个月前我遇到了同样的行为。我得出的结论是,当 WebAPI 服务收到带有一些数据的 POST 请求时,它将:

  1. 调用类型构造器实例化一个新的C#对象对应POST请求。
  2. 将 POST 请求中的数据添加(而不是覆盖)到这个新对象的列表中。

我知道,您可能可以从结果中推断出这一点,并且您很好地说明了这一点。

但我最终做的是将类型构造函数中的任何初始值设置移到工厂中,以应对我需要设置这些“默认”值的情况。然后,当 new() 作为 POST 的一部分被调用时,它返回一个空列表,因此从 POST 添加的值是唯一最终出现在对象中的值。

关于c# - 附加而不是覆盖 Web API 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31035950/

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