Lorsque j'effectue un appel JSON depuis AngularJS vers mon contrôleur WebApi via une requête GET, mes dates arrivent à mon modèle en tant que type 'Local'. C'est bien et comment je veux que ça fonctionne..NET WebApi Inconsistant DateTime Kind POST vs GET
Cependant, lorsque je change la méthode en POST (sur le contrôleur WebApi et sur mon code client AngularJS), les dates sont une heure, car le type DateTime est maintenant UTC. Les dates sont sérialisées via .toJSON() avant d'être envoyées et tout semble identique via l'inspection du réseau de Chrome lors de l'examen des requêtes GET et POST.
Comment puis-je garder le type DateTime cohérent entre les requêtes POST et GET afin qu'elles soient toujours locales?
Edit # 1:
Appel angulaire JS:
var params = {
DateFrom: detail.from.toJSON(),
DateTo: detail.to.toJSON(),
Filters: detail.filters
};
return http.post(window.urls.apiGetAllErrorsGraphData, params);
Dans mon exemple actuel, la valeur de params.DateFrom = "2014-04-30T23: 00: 00.000Z", detail.from = 01/05/2014 en tant qu'objet Date JS. Dans ce cas, http.post est un service Angular que j'ai écrit et qui enveloppe essentiellement les appels HTTP.
Controller .NET WebAPI
[POST("api/errors/chart")]
[HttpPost]
[HttpOptions]
public IHttpActionResult GetAllErrorsGraphData([FromBody]AllErrorChartDetails details)
{
var results = chartDataService.GenerateAllErrorsData(details.DateFrom, details.DateTo, details.Filters);
return Ok(results.Select(x => new { date = x.Key, errors = x.Value }));
}
J'utilise AttributeRouting si vous êtes curieux de ce que les attributs sont sur la méthode.
Pouvez-vous montrer le code pertinent? – AWinkle
Message original mis à jour. – Tom
Je suppose que c'est votre format de date dans la requête GET. Pouvez-vous poster votre code pour cela? – tia