ActionLink到HttpPost动作方法

时间:2012-11-24 20:13:36

标签: asp.net-mvc asp.net-mvc-3 jquery

我的页面上有这个链接:

@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;
    });

当行动metohd就像:

public ActionResult Like(int itemId)
...

但如果我用[HttpPost]装饰方法它不起作用。
这可以实现吗? 如果我不添加[HttpPost],还有什么安全问题?

1 个答案:

答案 0 :(得分:2)

试试这个:

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

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

你正在传递item.Id两次,首先是url,第二次是body。使用post方法时,您仍然可以通过url传递参数。当你想隐藏这些参数时,用body传递参数是好的。

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

你有错误:

data: { item: itemId } 

应该是:

data: { itemId: itemId },