Я пытаюсь добавить поле в существующий контракт данных в нашей системе. (Сначала код EF, POCO с атрибутом ад: P)
Однако при сериализации контракта в виде бритвы (для добавления в модель Angular.js) сериализатор пропускает новое поле. Если я перехожу в режиме отладки, объект Model
в представлении содержит поле, но после того, как я использую JsonConverter.SerializeObject(Model)
, модель вывода не включает новое поле.
Я переработал приложение, перезапустил веб-сайт и перезапустил IIS без разрешения. Я также проверил поток данных с помощью fiddler, чтобы избежать проблем с кэшированием на стороне браузера.
Следующий обходной путь действительно работает, поэтому свойство существует в модели:
var model = @Html.ToJson(Model);
model.NewProperty = @Model.NewProperty;
return {
model: model
};
... где Html.ToJson(Model)
- это метод расширения, который просто вызывает JsonConvert.SerializeObject(Model)
и вставляет его в MvcHtmlString
.
Кто-нибудь знает, что происходит? Согласно этому ответу в json.net существует некоторая форма кэширования информации о типах, но больше информации о ней найти сложно.