【发布时间】:2021-07-13 12:49:45
【问题描述】:
我正在尝试执行发送 DateTime 的 API?参数作为查询字符串。以下是我的 API:
[HttpGet("filter")]
public async Task<ActionResult<PagedList<Inv>>> GetFilterAsync([FromQuery] DateTime? dateFrom, [FromQuery] DateTime? dateTo, [FromQuery] int page, [FromQuery] int pageSize)
{
但是当我尝试如下在邮递员中执行它时,我收到了一个错误。
http://localhost:5000/api/Inv/filter?dateFrom=null&dateTo=null&page=1&pageSize=20
这是错误:
{
"errors": {
"dateTo": [
"The value 'null' is not valid."
],
"dateFrom": [
"The value 'null' is not valid."
]
},
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "|8c4093d7-485e79a6a805ceae."
}
但是当我将它留为如下空白时,它会起作用。我们不能通过null 而不是blank space 吗?
http://localhost:5000/api/Inv/filter?dateFrom=&dateTo=&page=1&pageSize=20
此外,当我们尝试从 UI 发送它们时也会出现同样的错误。
【问题讨论】:
-
也许解析器认为
null不为空。这是一个值为“null”的字符串。就像“2021-07-13”一样。并未能将其解析为DateTime。 -
我认为省略它是预期的方式。 A您可以编写自己的价值提供者。见:docs.microsoft.com/en-us/aspnet/core/mvc/models/…
-
现在不要,如何构建查询字符串,但是如果为您的数据定义了一个类型,您可以为 DateTo 定义一个 getter,类似于 'return dateTo ?? string.Empty'(以 dateTo 作为道具的后备字段 - 在这种情况下没有自动道具)
标签: c# asp.net-web-api postman