10

Asp.Net の「新しい」WebApi に苦労しています...

Jsonを投稿したいだけですが、データを逆シリアル化していません...何が間違っていますか?!

コントローラ クラス

    public class UtilityController : ApiController
    {
        [HttpPost]
        public string Bla(Bla bla)
        {
            return "bla";
        }
    }

ブラクラス:

    public class Bla
    {
        public string Een { get; set; }
        public string Twee { get; set; }
    }

API 構成:

    config.Routes.MapHttpRoute(
        名前: "DefaultApi",
        routeTemplate: "api/{controller}/{Action}/{id}",
        デフォルト: 新しい { id = RouteParameter.Optional }
    );

投稿データ:

    var bla = $.parseJSON('{"Een":"UNO","Twee":"DUE"}');
    $.ajax({
    タイプ: "ポスト",
    url: "/api/utility/Bla",
    データ: {ブラ: ブラ},
    データ型: "json"
    }).done(関数(メッセージ) {
    alert( "保存されたデータ: " + msg );
    });

4

3 に答える 3

22

私は何を間違っていますか!

JSON リクエストを送信していません。application/x-www-form-urlencodedリクエストを送信しています。

したがって、実際の JSON リクエストを送信していることを確認してください。

var bla = { "Een": "UNO", "Twee": "DUE"};
$.ajax({
    type: 'POST',
    url: '/api/utility/Bla',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(bla),
}).done(function( msg ) {
    alert( "Data Saved: " + msg );
});

正しいcontentTypeヘッダーをapplication/jsonに設定した方法、メソッドを使用しJSON.stringifyて実際の JSON 要求を送信した方法、およびdataType: 'json'jQuery が Content-Type 応答ヘッダーから自動的に推測できる無用なパラメーターを削除した方法に注目してください。サーバーが送信します。

于 2012-10-15T10:52:04.393 に答える
0

パラメータは、Post メソッドblaでタグ付けする必要がある場合があります。[ModelBinder]

[HttpPost]
public string Bla([ModelBinder]Bla bla)
{
    return "bla";
}
于 2012-10-15T10:53:38.603 に答える
-1

この行を変更してみてください:

data: {Bla : bla},

これに:

data: bla,
于 2012-10-15T10:51:54.017 に答える