1

次の AJAX リクエストがあります。

var recordToRevert = $(this);
var umbrellaId = $(this).data("id");
var requestData = {
    umbrellaId: umbrellaId,
};

$.ajax({
    url: "/Express2/api/BenefitBank/RevertTransactionUmbrella",
    type: "POST",
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(requestData),
    headers: {
        "Authorization-Token": "7,181,22",
        "CentreNumber": "0"
    }
}).done(function (data) {
    if (data.FoundRevertableTransactions) {
        recordToRevert.parent().html("<span class=\"success\">Reverted</span)");
    } else {
        alert('Umbrella NOT reverted');
    }
}).fail(function () {
    alert('Umbrella NOT reverted');
});

ここでMVCコントローラー/アクションに送信しています:

[HttpPost]
[ActionName("RevertTransactionUmbrella")]
public HttpResponseMessage PostRevertTransactionUmbrella(Int64 umbrellaId)
{
    if (ModelState.IsValid)
snip...

これは私が得ている応答です。

{"Message":"No HTTP resource was found that matches the request URI 'http://localhost/Express2/api/BenefitBank/RevertTransactionUmbrella'.","MessageDetail":"No action was found on the controller 'BenefitBank' that matches the request."}

ブレークポイントを設定しましたが、コントローラー アクションがヒットしません。JSON を正しく送信していないのでしょうか。

ただし、このリクエストは機能します。

$.ajax({
    url: "/Express2/api/BenefitBank/GetRequestObjects",
    type: "GET",
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    //data: JSON.stringify(requestData),

[HttpGet]
[ActionName("GetRequestObjects")]
public HttpResponseMessage GetRequestObjects()
{
    return Request.CreateResponse(HttpStatusCode.Accepted, new BenefitBankRequestObjects());
}

コントローラーは両方のリクエストでヒットしているように見えますが、アクションは最初のリクエストでヒットしていませんか?

4

2 に答える 2

2

と同等のクエリ文字列を渡すかInt64 umbrellaId、デフォルト値をゼロに設定する必要があります。

于 2013-04-26T09:41:48.327 に答える
0

URL を次のように変更してみてください。

url: "/Express2/api/BenefitBank/RevertTransactionUmbrella"

に:

url: "/Express2/api/BenefitBank/PostRevertSingleTransaction"
于 2013-04-26T09:17:45.037 に答える