c# - 接受 Guid 集合的 API 控制器 - 未传递参数值时收到空 Guid
问题描述
我有一个 ASP.NET API 控制器,它看起来像这样:
[HttpGet, Route("endpoint")]
public async Task GetValues([FromUri] IReadOnlyCollection<Guid> ids)
当我使用此 URI 调用此端点时:
'http://localhost:56132/api/controllers/endpoint?ids='
然后调试收到的集合,它实际上包含一个空条目Guid
。在这种情况下,我预计该集合是空的。为什么它会这样工作?有什么我可以做的,它不会将这个空添加Guid
到集合中吗?
解决方案
ASP.NET 正在按照您所说的那样做:您提供了一个没有价值的元素。您已将集合指定为<Guid>
,一个不能为 null 的值类型,因此您将获得单个元素的默认值,即 Guid.Empty
如果您提供两个没有值的参数,您将在集合中获得两个元素,其中 Guid.Empty 作为值:
localhost:56132/api/controllers/endpoint?ids=&ids=
有什么我可以做的,它不会将这个空的 Guid 添加到集合中吗?
如果您想要一个没有元素的集合,请不指定任何元素:
localhost:56132/api/controllers/endpoint?
如果您想要一个包含 1 个空值的集合,请使用可为空的类型而不是Guid
,例如Guid?
:
推荐阅读
- php - PHP Artisan Comand 在 CentOS 7 上使用 php-fpm 无法在 Nginx 中工作
- matlab - 如何将复杂模型拟合到复杂数据
- python - 如何在给定纬度和经度列表的球体上绘制热图?
- python - 如何在 pytorch 中使用 checkpoint 模型文件来测试 CIFAR-10 数据集?
- javascript - 当匹配什么都没找到时如何得到假?
- node.js - 状态机设计专家建议
- python - 逐行读取 CSV 文件 python
- mongodb - MongoDB:将复杂数据的数组转换为 CSV
- c# - GUI 和服务器应用程序
- javascript - Firebase 是否允许“读取:真”规则查看用户电子邮件?