this.model.save() を使用してモデルを保存することと、jquery ajax タイプの PUT を使用することの間には、いくつかの違いがあるようです?
APIコントローラーに次のメソッドがあります
public void Put(string id, [FromBody]IContent value) {
// save
}
また、次のように JSON フォーマッタ シリアライザ設定で TypeNameHandling を有効にしました。
config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto;
このようにjquery ajaxを使用してデータをPUTした場合
$.ajax({
url: "/api/page/articles/1",
type: "PUT",
dataType: "json",
contentType: "application/json",
data: JSON.stringify({"$type": "BrickPile.Samples.Models.Article,BrickPile.Samples","id": "articles/1", "heading": "Some heading..." })
});
オブジェクトは put メソッドで正しくバインドされますが、バックボーンで model.save() を使用してオブジェクトを保存しようとすると、入力値が null になり、オブジェクトをバインドできませんか?
これは私がそれを行う方法です:
this.model.set({ heading: 'foo' });
this.model.save();
少なくともfirebugを見ると、リクエストヘッダーは問題ないようで、ペイロードはJSONのようです。同じペイロードでフィドラーを使用して一部のデータを API に PUT することもできますが、firebug からペイロード ソースをコピーする場合はできません: http://cl.ly/Nkedを参照してください。
ここで私が間違っていることを誰かが説明できますか?