为什么我不能用 GET 参数绑定查询字符串中的日期?
Why can't I bind dates in query string with GET parameters?
我正在使用 ASP.NET Core 3.1。我正在尝试使用 GET 将查询字符串中的日期绑定到 PageModel。这是我的查询字符串:
?id=15+startDate=1900-01-01+endDate=1900-01-01
这是我的 OnGet 的签名:
public void OnGet(int id, DateTime startDate, DateTime endDate)
值始终分别为 0, 1/1/0001 00:00:00, 1/1/0001 00:00:00
。
如果我删除日期并只传递 id,它就可以正常工作。为什么查询字符串中的日期会破坏包括 ID 在内的所有内容?我还尝试将数据类型从 DateTime
更改为 string
,但它仍然与字符串参数始终为 null
.
中断
查询字符串中参数的分隔符是 &
,而不是您的示例中的 +
。更正:
?id=15&startDate=1900-01-01&endDate=1900-01-01
日期时间参数的一个可以说更好的方法是将它们作为字符串接受,然后使用 DateTime.TryParse
来解析并控制预期的格式。这样您将始终有机会检查提供的字符串值并决定是否要将其转换为 DateTime
以及如何转换。
我正在使用 ASP.NET Core 3.1。我正在尝试使用 GET 将查询字符串中的日期绑定到 PageModel。这是我的查询字符串:
?id=15+startDate=1900-01-01+endDate=1900-01-01
这是我的 OnGet 的签名:
public void OnGet(int id, DateTime startDate, DateTime endDate)
值始终分别为 0, 1/1/0001 00:00:00, 1/1/0001 00:00:00
。
如果我删除日期并只传递 id,它就可以正常工作。为什么查询字符串中的日期会破坏包括 ID 在内的所有内容?我还尝试将数据类型从 DateTime
更改为 string
,但它仍然与字符串参数始终为 null
.
查询字符串中参数的分隔符是 &
,而不是您的示例中的 +
。更正:
?id=15&startDate=1900-01-01&endDate=1900-01-01
日期时间参数的一个可以说更好的方法是将它们作为字符串接受,然后使用 DateTime.TryParse
来解析并控制预期的格式。这样您将始终有机会检查提供的字符串值并决定是否要将其转换为 DateTime
以及如何转换。