加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何在web api中创建一个int []参数?

发布时间:2020-12-16 03:17:05 所属栏目:asp.Net 来源:网络整理
导读:我在我的api上有一堆操作,它们是通用的GetById和GetByIds,它们将实体拉出并通过格式化程序返回. 这些操作如下所示: [HttpGet][Route("ByIds")]public IHttpActionResult ByIds([FromUri]int[] ids){ var items = _myContext.SomeEntity.Where(a = ids.Conta
我在我的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],其值为0.

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

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

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

解决方法

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

Basicly:

int i = 0

是等价的整数

string myString = null;

如果你想让你的int为null,请使用:

int? i = null;

所以会发生什么是数组需要至少一个项目,它不会为该项目分配值.但由于整数的默认值为0,因此它将获得该值

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读