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 传递两次,第一次在 url 中,第二次在正文中。使用 post 方法时,仍然可以通过 url 传递参数。当你想隐藏这些参数时,用 body 传递参数是很好的。

还有一件事,您可以在这种情况下使用 Ajax.ActionLink(因为它是为这种情况创建的)

你有错误:

data: { item: itemId } 

应该:

data: { itemId: itemId },
于 2012-11-24T20:19:16.427 回答