Asp.net mvc ActionLink到HttpPost操作方法

Asp.net mvc ActionLink到HttpPost操作方法,asp.net-mvc,asp.net-mvc-3,jquery,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({

我的页面上有以下链接:

@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]
,会出现什么安全问题?

请尝试以下操作:

$(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 },

您正在查找“int itemId”,为什么要传递项:“data:{item:itemId}”?是的,当我从函数中删除“data”时,问题就消失了。