ASP.NET POST 以 DateTime 作为参数的请求问题

ASP.NET POST request with DateTime as parameter issue

我试图从我的客户端 (angular) 传递一个日期对象到我的 API。 (POST 请求)

不巧,API收到了,但是日期完全错了。

发送:2021 年 11 月 11 日星期四 10:00:00 GMT+0200

恢复:1/1/000112:00:00上午

控制器:

    [HttpPost("{appointment}")]
    public async Task<ActionResult> SetAppointment(DateTime setAppointment)
    {
        // code
    }

客户端

setAppointment(date) {
return this.http.post(environment.apiUrl + 'barber/appointment', date);}

当 date - 是 DateTime 对象时。

我试过将它作为字符串发送,然后将其解析为 DateTime 对象,它有点管用,但这不是我想要的结果。

我曾尝试在发送之前将日期显式解析为客户端的 DateTime 对象,但效果不佳。

预期的结果是直接在控制器中获取日期作为 DateObject。

知道为什么会发生这种事情吗?我知道 js 和 c# 以不同的方式处理 DateTime 对象,但并不真正理解如何在不将其作为字符串发送的情况下修复它或解决它。

谢谢!!!

使用 Angular 中的 moment 库以便以将自动转换为 DateTime 格式变量的格式发送所需的值。

问题一:参数命名

注释 [HttpPost("{appointment}")] 包含一个变量 appointment,该变量未被方法 SetAppointment 捕获,因为 none 个参数具有此名称。相反,您有一个名为 setAppointment 的参数。名称必须匹配。

问题二:URI

问题中未提供示例 URI,请确保其编码正确,因为这是一个常见的陷阱。

问题三:日期格式

通常一个服务器可能有多个不同类型的客户端使用它。通常,客户端符合服务器的日期格式(尽管使用标准日期格式)。您可以选择让服务器遵循您从 Angular 传递的格式,只要它经过编码即可。在这种情况下,您可以将 appointment 作为 string 检索并使用与服务器将接收的内容匹配的 a custom date and time format 对其进行解析。