0

私が数ヶ月完了したプロジェクトでは、コントローラーにこれがありました:

 public HttpResponseMessage Post(PersonModel model)
 {
 }

json オブジェクト内のメンバーを含む ajax ポストを送信でき、WebAPI はモデル内の各プロパティをシームレスに設定します。

ただし、新しいプロジェクトを開始したばかりで、同じことを行っていますが、コントローラー内のモデルは null になっています。バインディングが壊れているようです。これが起こらないように、ASP.NET WebAPI で何か変更がありましたか?

これは私のajaxリクエストです:

$.ajax({ url: "api/auth", type: "post", data: { username: "jon", password: "123" },dataType: "json", contentType: "application/json; charset=utf-8" });
4

1 に答える 1

4

ajax リクエストのコンテンツ本文の形式はapplication/x-www-form-urlencoded:
username=jon&password=123ですが、 content-type を に設定していますapplication/json。このため、Json.NET シリアライザーは要求本文のコンテンツを逆シリアル化できませんでした。

次のいずれかを行うことができます。

  1. application/x-www-form-urlencodedcontentType を明示的に設定する代わりに、content-type を に変更します。application/json

  2. 引き続き使用しますapplication/jsonが、Json はデータを文字列化します。
    data: JSON.stringify({ username: "jon", password: "123" })

お役に立てれば。

于 2012-12-14T20:36:32.023 に答える