我对MVC很新。所以,一直在研究CodePlex中的MusicStore应用程序代码。
我无法理解以下代码的含义:
// AJAX: /ShoppingCart/RemoveFromCart/5
[HttpPost]
public ActionResult RemoveFromCart(int id)
{
// Remove the item from the cart
var cart = ShoppingCart.GetCart(this.HttpContext);
// Get the name of the album to display confirmation
string albumName = storeDB.Carts
.Single(item => item.RecordId == id).Album.Title;
// Remove from cart
int itemCount = cart.RemoveFromCart(id);
// Display the confirmation message
var results = new ShoppingCartRemoveViewModel
{
Message = Server.HtmlEncode(albumName) +
" has been removed from your shopping cart.",
CartTotal = cart.GetTotal(),
CartCount = cart.GetCount(),
ItemCount = itemCount,
DeleteId = id
};
return Json(results);
}
//
// GET: /ShoppingCart/CartSummary
[ChildActionOnly]
public ActionResult CartSummary()
{
var cart = ShoppingCart.GetCart(this.HttpContext);
ViewData["CartCount"] = cart.GetCount();
return PartialView("CartSummary");
}
}
}
请帮助我澄清一下,HttpPost如何作为Ajax Post返回。
答案 0 :(得分:3)
我知道这是一个老问题,但我在搜索中遇到了这个问题,为了让这个工作起作用,我必须在Url.Action周围添加引号。
$.ajax({
type: "POST",
url: "@(Url.Action("RemoveFromCart"))",
data: ({
Id:1
}),
success: success,
dataType: dataType
})
答案 1 :(得分:1)
您好,您可以使用jQuery Ajax进行异步回发请求
请参阅以下代码
$.ajax({
type: "POST",
url: @Url.Action("RemoveFromCart"),
data: ({
Id:1
}),
success: success,
dataType: dataType
})
[HttpPost] - 属性可确保 RemoveFromCart 操作方法仅接受发布请求
[ChildActionOnly] - 属性确保只能从视图中调用操作方法作为子方法。这些通常与部分视图相关联。