1

私のページには次のリンクがあります。

@Html.ActionLink("Like", "Like", "Like", new {likeId = i.ItemId}, new {id = @i.ItemId, @class = "likeButton"})

これは私のajax呼び出しです:

$(document).on("click", ".likeButton", function (event) {

        var itemId = event.target.id;

        $.ajax({
            url: this.href,
            type: 'POST',
            data: { item: itemId },
            context: this,
            success: function (result) {
                ...
        return false;
    });

そして、アクションメトードが次のような場合に機能します。

public ActionResult Like(int itemId)
...

でもメソッドを飾るとうまくいき[HttpPost]ません。
これは達成できますか?
また、追加しない場合、どのようなセキュリティの問題が発生する可能性があります[HttpPost]か?

4

1 に答える 1

2

これを試して:

$(document).on("click", ".likeButton", function (event) {

    $.ajax({
        url: this.href,
        type: 'POST',
        context: this,
        success: function (result) {
            ...
    return false;
});

item.Idを2回渡します。最初はURLで、2番目は本文です。postメソッドを使用する場合でも、URLを介してパラメーターを渡すことができます。これらのパラメーターを非表示にする場合は、bodyを使用してパラメーターを渡すと便利です。

そしてもう1つ、この場合はAjax.ActionLinkを使用できます(この種の場合のために作成されているため)

そして、あなたは間違いを犯しています:

data: { item: itemId } 

する必要があります:

data: { itemId: itemId },
于 2012-11-24T20:19:16.427 に答える