我的页面上有这个链接:
@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]
,还有什么安全问题?
答案 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 },