【问题标题】:ASP.NET POST request with DateTime as parameter issue以 DateTime 作为参数的 ASP.NET POST 请求问题
【发布时间】:2021-11-09 21:41:23
【问题描述】:

我正在尝试从我的客户端(角度)将一个日期对象传递给我的 API。 (POST 请求)

不幸的是,API 收到了它,但日期绝对错误。

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

修订:1/1/0001 12:00:00 AM

控制器:

    [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 对象,但我真的不明白如何在不将其作为字符串发送的情况下修复它或解决它。

谢谢!!!

【问题讨论】:

  • 您需要指定一个自定义解析器...或者更简单,只需以预期格式进行角度传递?
  • 我们能看一个 URI 的例子吗,你编码了吗?此外,通常 POST 包含一个正文,那么为什么 URI 中的日期是日期,除非它是您的约会的 ID?
  • @OmarAbdelBari 感谢快速重播!您能否进一步解释一下预期格式的角度传递是什么意思?因为我真的不明白为什么会这样
  • 另外,appointment != setAppointment。他们必须匹配。有几个问题,但这将是你的第一个问题
  • 还要注意`1/1/0001 12:00:00 AM`是该类型默认值的字符串表示

标签: asp.net datetime-format


【解决方案1】:

问题一:参数命名

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

问题二:URI

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

问题三:日期格式

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

【讨论】:

  • 非常感谢您的帮助!你是救生员!
【解决方案2】:

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

【讨论】:

  • 感谢您的回答!您能否进一步解释一下您的意思是什么?
  • 我试过 var time = moment(this.time.value);但什么都没有改变......
猜你喜欢
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多