将datetime从angular $ http.get请求传递给Web API 2控制器

时间:2017-06-28 11:12:52

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

我有一个Web API 2控制器:

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

一个有角度的$ http来电:

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

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

我在404之后也遇到了这个错误:

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

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

我尝试过新的Date()。toISOString(),并且也是这样做的。

那么如何将Angular中的日期传递给Web API控制器?

1 个答案:

答案 0 :(得分:1)

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

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

然后通过

从客户端调用api
$http.get("/api/MyRoute?date=" + new Date().toISOString());