【问题标题】:Why can't I bind dates in query string with GET parameters?为什么我不能用 GET 参数绑定查询字符串中的日期?
【发布时间】:2021-08-21 00:44:49
【问题描述】:

我正在使用 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

【问题讨论】:

    标签: ajax asp.net-core data-binding razor-pages


    【解决方案1】:

    查询字符串中参数的分隔符是&,而不是您的示例中的+。更正:

    ?id=15&startDate=1900-01-01&endDate=1900-01-01
    

    使用日期时间参数可以说更好的方法是将它们作为字符串接受,然后使用DateTime.TryParse 来解析并控制预期的格式。这样,您将始终有机会检查提供的字符串值并决定是否要将其转换为 DateTime,以及如何转换。

    【讨论】:

    • Grrrr。不知道当我加入加号时我在想什么。我最近一直在这么多语言之间跳跃。我应该马上意识到这一点。令人惊讶的是,你看了多少次,却看不到明显的东西。感谢您指出这一点,现在我真的很愚蠢。顺便说一句,我也在考虑字符串方法和解析,最终可能会包含时区信息或 ISO 日期,以确保正确处理本地日期。
    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2014-12-20
    • 2015-11-19
    • 2012-07-30
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多