如何告诉MVC中的JsonResult操作方法使用不同的Serializer方法

时间:2018-05-09 22:57:26

标签: json asp.net-mvc angular serialization json.net

我正在开发一个带有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看起来像这样:

enter image description here

这些MVC构造中的大多数对我来说都是新的,所以我唯一的猜测是,Json()中的序列化程序与我之前使用的序列化程序的工作方式不同。所以我只能想到两个可能的解决方案:要么找出如何告诉angular如何格式化它从JsonResult获取的那些奇怪的DateTimes,要么告诉Json使用我之前使用的序列化器而不是默认的序列化器,但是我不知道如何完成这些事情,或者他们是否是正确的解决方案。

0 个答案:

没有答案