gpt4 book ai didi

asp.net-mvc - 如何使 web api 中需要 int[] 参数?

转载 作者:行者123 更新时间:2023-12-01 22:50:45 24 4
gpt4 key购买 nike

我的 api 上有很多通用 GetById 和 GetByIds 操作,它们可以提取实体并通过格式化程序返回它。

这些操作如下所示:

[HttpGet]
[Route("ByIds")]
public IHttpActionResult ByIds([FromUri]int[] ids)
{
var items = _myContext.SomeEntity.Where(a => ids.Contains(a.ID)).ToList();
return SomeFormatter(items);
}

例如,如果您使用 http://localhost/api/SomeEntity/ByIds?ids=1&ids=2 点击此按钮,您将得到一个包含 1 和 2 的数组,正如您所期望的那样。

如果您使用 http://localhost/api/SomeEntity/ByIds?ids= 点击此按钮,您可能会期望得到一个空数组,但您会得到 int[1] code> 的值为 0

我怀疑会发生什么,它会将其识别为指定的一个元素,无法转换它,因此使用 default(int) 并将其放入数组中,这会为您提供一个具有一个值的 int 数组,值为 0。

但是,如果您使用 http://localhost/api/SomeEntity/ByIds?ids=potato 点击它,那么您会得到一个无效的模型状态,我会自动处理它。

问题是,将空查询参数值映射到空数组或 ModelState 错误的万能方法是什么(即,如果提供空值,则与马铃薯的行为相同)?我认为模型状态错误是首选,并且更符合逻辑。

最佳答案

出现 int 值 0 是因为 0 与字符串的 null 相同。如果您希望 int 的值为 null,请使用 int?

基本上:

int i = 0

是否等于整数

string myString = null;

如果您希望 int 为空,请使用:

int? i = null;

所以发生的情况是数组至少需要一项,它不会为该一项赋值。但由于整数的默认值为 0,因此它将获取该值

关于asp.net-mvc - 如何使 web api 中需要 int[] 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32904441/

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