Звучит так, как будто проблема связана с вашим серверным кодом, а не с вызовом от базовой линии. A PUT
- операция редактирования на сервере, поэтому вы обновляете существующий объект. Для идентификации модели на сервере и изменения свойств, которые были изменены, требуется свойство ID.
Если ASP.NET MVC жалуется, что модель уже существует в базе данных, вы пытаетесь сделать INSERT
вместо UPDATE
. Нам нужно будет увидеть контроллер и код доступа к данным, чтобы увидеть, где все происходит.
ОБНОВЛЕНИЕ: Что произойдет, если вы оставите имущество idAttribute
? Из документации Backbone:
A special property of models, the id is an arbitrary string (integer id or UUID).
If you set the id in the attributes hash, it will be copied onto the model as a
direct property.
Атрибут id
должен быть отправлен по умолчанию; похоже, вы заставляете его быть включенным во второй раз.
Под idAttribute
в документации:
A model's unique identifier is stored under the id attribute. If you're directly communicating
with a backend (CouchDB, MongoDB) that uses a different unique key, you may set a Model's
idAttribute to transparently map from that key to id.
модель ASP.NET MVC в связывании должны быть в состоянии справиться с id
VS. Id
.
ОБНОВЛЕНИЕ: Нашел хороший blog post, который описывает использование модели представления, чтобы помочь в сериализации ваших объектов C# в формате, который ожидает Магистраль. Это кажется разумным, если немного раздражающим, решением.
Какой у вас код, «обновляющий» модель? Вы уверены, что не пытаетесь создать модель, которая уже существует? –
Довольно точно. Проблема связана с JsonValueProvider – adriaanp
, что произойдет, если вы установите 'idAttribute' в' 'id" 'вместо этого? Дублировать или они сливаются (я думаю, что они объединены)? – jgauffin