.NET WebApi不一致的DateTime类型POST与GET
本文关键字:POST GET 类型 DateTime WebApi 不一致 NET | 更新日期: 2023-09-27 18:21:16
当我通过GET请求从AngularJS向WebApi控制器进行JSON调用时,我的日期会以"本地"类型传递到我的模型中。这很好,我希望它能正常工作。
然而,当我将方法更改为POST(在WebApi控制器和AngularJS客户端代码上)时,日期会延迟一个小时,因为DateTime类型现在是UTC。日期在发送之前通过.toJSON()进行序列化,在查看GET和POST请求时,通过Chrome的网络检查,一切看起来都是一样的。
如何在POST和GET请求之间保持DateTime Kind的一致性,使它们始终是本地的?
编辑#1:
Angular JS调用:
var params = {
DateFrom: detail.from.toJSON(),
DateTo: detail.to.toJSON(),
Filters: detail.filters
};
return http.post(window.urls.apiGetAllErrorsGraphData, params);
在我当前的示例中,params的值。DateFrom="2014-04-30T23::00.000Z",detail.from=01/05/2014作为JS Date对象。
在本例中,"http.post"是我编写的一个Angular服务,它基本上封装了http调用。
.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 }));
}
如果你想知道这个方法的属性是什么,我会使用AttributeRouting。
当您检索DateTime对象时,是否可以不将其转换为所需的任何格式?
DateTime json = yourJsonMethod();
json = json.ToLocalTime();