Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pass datetime from angular $http.get request to Web API 2 controller

I have a web API 2 controller:

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

And an angular $http get call:

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

This doesn't work, I get a 404 error.

I also get this error after the 404:

XMLHttpRequest cannot load http://localhost:2344/api/MyRoute/2017-06-28T00:00:00.000Z. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

But if I change the parameter to anything but a date it works.

I've tried new Date().toISOString() and that does that same.

So how do I pass a date from Angular to a Web API controller?

like image 829
Sun Avatar asked Jun 28 '17 11:06

Sun


1 Answers

The problem seems to be with the datetime specification in the routing attribute. The solution was to just remove it and define the route as this

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

And then call the api from the client by

$http.get("/api/MyRoute?date=" + new Date().toISOString());
like image 154
Marcus Höglund Avatar answered Sep 18 '22 12:09

Marcus Höglund