ServiceStackはなぜJSON POSTリクエストでモデルバインディングを作成できませんでしたか?
-
12-12-2019 - |
質問
$.ajax({
type: 'POST',
url: "/api/student",
data:'{"x":3,"y":2}',
dataType: "json",
complete: function (r, s) {
debugger;
},
success: function(response){
debugger;
},
contentType: "application/json" // !!!!!!!!!!!! The reason of problem. I could see Json on firebug. It was false-positive for my code !
});
.
Firebugを介してストリームを追いついた。Firebugが認識され、JSONオブジェクトを示した。
このコードにアクセスしたRestServiceBaseのOnPostメソッド.butモデルバインディングは機能しませんでした。 プロパティ名はJSONオブジェクトとC#クラスとまったく同じでなければなりませんか?
または私は何か足りない?(はい、uは何か足りない!)
PS:私はURLを「/ API /学生/ JSON / AsynConeway」に変更しましたが、それから私は404エラーを得ました
解決 3
私はを追加する必要があります
データ型:「アプリケーション/ JSON」プロパティへのAjax要求!
他のヒント
servicestack modelはJSON投稿(およびいずれもX-WWW形式のURLENCODEDを含むサポートされているコンテンツタイプ。
servicestack.examples にはこれがあります。
このコードにアクセスしたRestServiceBaseのOnPostメソッド.butモデルバインディング 働かなかった。
あなたが拘束しようとしているDTOのものを見せていません。しかし、このJSON
.{"x":3,"y":2}
マッチングDTO、例えば:
.public class Student { public int X { get; set; } public int Y { get; set; } }
DOプロパティ名はJSONオブジェクトとC#クラスとまったく同じでなければなりませんか?
彼らはコースの名前と一致しなければなりませんが、大文字と小文字が区別されない、上記を参照してください。
PS:URLを「/ API /学生/ JSON / AsynConeway」に変更しましたが、 それから私は404エラーを得ました
これは間違っています。 自動事前定義路を使用しようとしている場合は、正しいURLは:
./api/json/asynconeway/student
Request DTO を想定して
Student
と呼ばれます。
ここでの鉱山のコード:
$.ajax({
type: "POST",
url: "/artist/delete",
data: { id: itemId },
success: function () {
$("div#" + itemId).fadeOut(function () { $(this).remove(); });
}
});
.
編集:ごめんなさい私はあなたがそこに欲しいものを間違えて、私はあなたに質問をするでしょう、なぜあなたがこのような関数を作ることができるサーバーにJSONを送信しているのです:
.
[HttpPost]
public ActionResult Delete(int id)
{
var artist = _db.Artists.Where(x => x.ID == id).SingleOrDefault();
if (artist == null)
{
return Content("false");
}
else
{
_db.Artists.DeleteOnSubmit(artist);
_db.SubmitChanges();
return RedirectToAction("Post");
}
}
edit2:とあなたはここでの構文エラーを持っています。
edit3:他の構文エラー
.
コードの終わりに }
}
});