Как указать методу действия JsonResult в MVC использовать другой метод сериализатора - PullRequest
0 голосов
/ 10 мая 2018

Я работаю над приложением MVC с угловым интерфейсом. До того, как я вручную передавал модель представления, которая содержит ряд различных полей, включая дату и время, непосредственно в представление в качестве параметра ActionResult, затем вручную сериализировал его в представлении с помощью Newtonsoft, прежде чем связать его с угловой моделью и отобразить ее.

то есть:

в контроллере:

ActionResult MainView()
{
    ....
    return View(model);
}

в представлении:

ng-data-init="init(@Newtonsoft.Json.JsonConvert.SerializeObject(Model.ItemList))"

Это работало нормально, и вся информация отображалась правильно.

Однако недавно я переключился на использование функции JsonResult и вызова Angular $ http для автоматического обновления данных в представлении в фоновом режиме. Все работает нормально, за исключением того, что поля DateTime не переводятся / не форматируются должным образом независимо от того, какой сериализатор используется внутри объекта JsonResult.

т

в контроллере:

    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, она все правильно форматирует, и даты точно соответствуют ожидаемым -

мм / дд / YYY

Но когда я передаю их через возврат Json() с помощью метода действия JsonResult, DateTimes выглядит следующим образом:

enter image description here

Большинство этих конструкций MVC являются новыми для меня, поэтому я могу только предположить, что сериализатор, запеченный в Json(), работает иначе, чем тот, который я использовал раньше. Таким образом, есть только два потенциальных решения, о которых я могу подумать: либо выяснить, как сказать angular, как форматировать те странные DateTimes, которые он получает из JsonResult, либо попросить Json использовать сериализатор, который я использовал ранее, вместо его по умолчанию, но я понятия не имею, как выполнить какую-либо из этих задач или если они даже являются правильным решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...