ServiceStackはなぜJSON POSTリクエストでモデルバインディングを作成できませんでしたか?

StackOverflow https://stackoverflow.com//questions/11678610

  •  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:他の構文エラー

        }
        }
    });
. コードの終わりに

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top