为什么我不能用 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 以及如何转换。