Играя с новым одностраничным инструментарием MVC 4, я заметил, что ни один из найденных примеров не содержит пример обновления DateTime обратно через WebApi.Вскоре я узнал, почему.
Я начал с создания стандартного SPA из предоставленного шаблона.Затем я открыл TodoItem.cs и добавил поле DateTime.Затем я сгенерировал контроллер, как указано в комментариях.(Без поля datetime все работает просто отлично).
После того, как все сгенерировано, я запустил приложение и перешел к индексу контроллера (я назвал контроллер «задачами»).Я получил страницу сетки с 0 записями, как и ожидалось, и нажал кнопку добавления.Я был доставлен на страницу редактирования, как и ожидалось, и ввел некоторые данные, включая дату, в свое блестящее новое поле даты и времени.Затем нажмите «Сохранить».
Произошла ошибка, в которой говорилось:
Ошибка сервера: код состояния HTTP: 500, сообщение: произошла ошибка десериализации объекта типа System.Web.Http.Data.ChangeSetEntry [].Содержимое DateTime '01 / 01/2012 'не начинается с' / Date ('и заканчивается') / ', как требуется для JSON.
Может показаться, что инструмент не поддерживает DateTimeеще.Я уверен, что смогу пройти и потратить немного времени на то, чтобы разобраться с этим и заставить его работать, но я подумал, что мне может повезти с кем-то, кто уже исправил эту проблему и может дать понимание.
Кто-нибудь уже боролся с этим?
Обновление: я добавляю больше информации, которую я нашел с тех пор, как спросил об этом.Я попытался использовать JSON.Net в качестве моего Formatter, как предложено ниже.Я думаю, что это будет возможным решением, однако, просто выполнить то, что рекомендовано ниже, недостаточно.
При использовании сериализатора JSON.Net я получаю следующую ошибку:
Этот DataController не поддерживает операцию «Обновление» для объекта «JObject».
Причина в том, что JSON.Net не полностью заполняет объект, к которому форматировщик пытается десертилизировать (System.Web.Http.Data.ChangeSet).
Передаваемый файл json:
[{"Id":"0",
"Operation":2,
"Entity":
{"__type":"TodoItem:#SPADateProblem.Models",
"CreatedDate":"/Date(1325397600000-0600)/",
"IsDone":false,
"Title":"Blah",
"TodoItemId":1},
"OriginalEntity":
{"__type":"TodoItem:#SPADateProblem.Models",
"CreatedDate":"/Date(1325397600000-0600)/",
"IsDone":false,
"Title":"Blah",
"TodoItemId":1}
}]
Встроенный Json Formatter способен преобразовать этот Json в объект ChangeSet с внедренным TodoItem.объекты в полях Entity и OriginalEntity.
Кто-нибудь получил JSON.Net для правильной десериализации?