【问题标题】:Pass datetime from angular $http.get request to Web API 2 controller将日期时间从角度 $http.get 请求传递到 Web API 2 控制器
【发布时间】:2017-12-01 17:19:33
【问题描述】:

我有一个 Web API 2 控制器:

[HttpGet]
[Route("api/MyRoute/{date:datetime}")]
public IHttpActionResult Get(DateTime date)
{
    return Ok(date);
}

还有一个角度 $http get 调用:

$http.get("/api/MyRoute/" + new Date());

这不起作用,我收到 404 错误。

在 404 之后我也收到此错误:

XMLHttpRequest 无法加载 http://localhost:2344/api/MyRoute/2017-06-28T00:00:00.000Z。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。

但是,如果我将参数更改为除日期之外的任何内容。

我已经尝试过 new Date().toISOString() 并且效果相同。

那么如何将日期从 Angular 传递到 Web API 控制器?

【问题讨论】:

  • 刚试过。结果相同。
  • 试试 '$http.get("/api/MyRoute/" + encodeURIComponent(new Date()))' 或 '$http.get("/api/MyRoute/" + encodeURIComponent(new Date().toISOstring()))'

标签: angularjs asp.net-web-api asp.net-web-api2 angular-http


【解决方案1】:

问题似乎与路由属性中的日期时间规范有关。解决方案是删除它并将路由定义为this

[HttpGet]
[Route("api/MyRoute")]
public IHttpActionResult Get(DateTime date)
{
    return Ok(date);
}

然后通过客户端调用api

$http.get("/api/MyRoute?date=" + new Date().toISOString());

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2015-11-20
    相关资源
    最近更新 更多