Похоже, проблема в коде на стороне сервера, а не в вызове Backbone. 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
против Id
.
ОБНОВЛЕНИЕ: найдено хорошее сообщение в блоге , в котором описывается использование модели представления для помощи в сериализации объектов C # в формате, который ожидает Backbone. Это кажется разумным, хотя и немного раздражающим решением.