1

現在、mvc 4 プロジェクトの Web API に「PUT」リクエストを送信するための ajax リクエストのセットアップがあります。私のリクエストは API のメソッドに入ることができますが、パラメーターは常に null です。理由はありますか?また、実行時に PUT リクエストを確認しましたが、フォーム コントロールごとにキーと値のペアの文字列が送信されます。これが私のコードです:

Web API メソッド (選択は常に null)

public void Put([FromBody]string selection)
{
}

アップデート:

自分で少しデバッグしていたことを忘れていました。フォームをシリアル化すると、パラメーターの名前が「選択」になることを確認しました。もう一度見てください。

Ajax 呼び出し:

$.ajax({
    type: "PUT",
    url: urlPrefix + "api/file/Manipulate",
    data: $("#frmManipulate").serialize(),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    statusCode: {
        204: function (jqXHR) {
            alert("No file(s)/Directory(s) were selected.");
        }
    }
}).done(function () {
    location.reload();
});
4

2 に答える 2

0

{ val1 : "test", val2 : "test2"}asp.net Web API はを文字列に逆シリアル化する方法を認識していないため、null です。サンプルとして、 DTOアプローチを使用してこれらの情報をアクションに渡すことができます。

Web API プロジェクトで、次のようなクラスを追加します。

public class InfoDTO
{
    public string val1 { get; set; }
    public string val2 { get; set; } 

    // other properties if you need
}

put アクションを変更して、このタイプのパラメーターを取得します。

public void Put([FromBody]InfoDTO info)
{
   // use 'info' object
}

クライアント側の JavaScript は同じコードを保持できます。

于 2013-12-04T19:34:09.867 に答える