0

Json オブジェクトをパラメーターとして送信するアクションに Ajax リクエストを作成しようとしています。

Jqueryのコードは次のとおりです。

var jsonObject = {
    "Id": 33,
    "Name": "TEST"
};

$.ajax({
    type: "GET",
    url: rootPath + "ScheduledEvents/Edit/",
    data: JSON.stringify(jsonObject),
    /*contentType: "application/json; charset=utf-8",*/
    dataType: "json",
    success: function (data) {
        $("#defaultModalRightEventContent").html(data);
        $("#defaultModalRightEvent").modal("show");
    },
    error: function (request, status, error) {
        alert(request.responseText);
    }
});

サーバー側のクラスは次のとおりです。

public class TestingClass
{
    public int Id { get; set; }
    public string Name { get; set; }
}

コントローラのアクションは次のとおりです。

[HttpGet]
public ActionResult Edit(TestingClass testingClass)
{
    return PartialView("_ScheduledEvent", new ScheduledEventVM());
}

何が起こっているかというと、アクションを実行したときにオブジェクトが null でなくても、Id と Name の両方が空です。

メソッドを GET から POST に変更すると、オブジェクトはアクションに正しく到達しますが、RequiredValidationToken エラーが発生します。そして、使用するトークンを含むフォームを実際に持っていないので、本当に選択肢がありません。

GET を使用する方法はありますか、または本当に POST を使用する必要がありますか。

よろしくお願いします。

4

1 に答える 1

1

あなたのメソッドは を読み取るのでEdit、サーバーの状態を変更していることを意味します。うまくいけば、データベースの更新操作です。
エラーに関する限りRequiredValidation Token、あなたが話していると思いますAntiForgeryToken[ValidateAntiForgeryToken]投稿リクエストの属性を削除するか、ヘルパー メソッドを使用してクライアント側から同じトークンを提供することで、これを回避できます。
ビューに書き込むHtml.AntiForgeryToken()と、html に name の隠しフィールドが作成されます__RequestVerificationToken。この値を取得して、ajax リクエストのデータとヘッダーと一緒にプッシュすることもできます。これを行うと、問題はなくなります。

于 2015-11-12T18:34:23.653 に答える