我正在开发一个带有Angular前端的MVC应用程序。在我手动将包含许多不同字段(包括日期时间)的视图模型作为ActionResult参数直接传递给视图之前,然后在视图中使用Newtonsoft手动将其序列化,然后再将其绑定到角度模型并显示它。 / p>
即:
在控制器中:
ActionResult MainView()
{
....
return View(model);
}
在视图中:
ng-data-init="init(@Newtonsoft.Json.JsonConvert.SerializeObject(Model.ItemList))"
此工作正常,所有信息都正确显示。
但是我最近切换到使用JsonResult函数和Angular $ http调用来自动更新后台视图中的数据。除了JsonResult对象内部使用的任何序列化程序都没有正确转换/格式化DateTime字段外,一切正常。
即:
在控制器中:
public JsonResult REIDataRefresh()
{
...
return Json(model.ItemList, JsonRequestBehavior.AllowGet);
}
中的角度:
$scope.data
$scope.LoadData = function() {
$http({
method: "GET",
url: 'Home/REIDataRefresh',
params:{'_': +new Date() }
}).then(function success(response) {
$scope.data = response.data;
}, function error(errResponse) {
alert("data " + errResponse.data + " status " + errResponse.status + " headers " + errResponse.headers + "config " + errResponse.config + " statusText " + errResponse + " xhrStat " + errResponse.xhrStatus);
});
};
// Initial data load
$scope.LoadData();
当我通过Newtonsoft.JsonConvert.SerializeObject
运行模型时,所有格式都正确并且日期正是预期的 -
MM / DD / YYY
但是,当我通过Json()
操作方法通过JsonResult
返回时,DateTimes看起来像这样:
这些MVC构造中的大多数对我来说都是新的,所以我唯一的猜测是,Json()
中的序列化程序与我之前使用的序列化程序的工作方式不同。所以我只能想到两个可能的解决方案:要么找出如何告诉angular如何格式化它从JsonResult获取的那些奇怪的DateTimes,要么告诉Json使用我之前使用的序列化器而不是默认的序列化器,但是我不知道如何完成这些事情,或者他们是否是正确的解决方案。