如何使用ASP.net MVC制作Ajax Post Post

时间:2013-09-04 06:40:31

标签: c# ajax asp.net-mvc http-post partial-views

我对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返回。

2 个答案:

答案 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] - 属性确保只能从视图中调用操作方法作为子方法。这些通常与部分视图相关联。