使用一个jquery帖子更新两个asp.net局部视图

时间:2014-06-07 10:56:06

标签: jquery ajax asp.net-mvc asp.net-mvc-4 asp.net-ajax

我正在开发一个asp.net应用程序。我有一个动作方法删除项目并刷新部分视图,如下所示:

 $(".removeCartItem").click(function () {

            if (confirm("Click OK if you want to delete this record; otherwise, click 'Cancel'")) {

                var recordToDelete = $(this).attr("data-id");
                if (recordToDelete != '') {                      
                    $.post("/Cart/DeleteCartItem", { "id": recordToDelete },
                        function (data) {                               
                            $("#divStore").html(data);                             
                        });
                }
            }
            return false; 

        });

这是动作方法

  [HttpPost]
        public ActionResult DeleteCartItem(int Id)
        {

            if (User.Identity.IsAuthenticated)
            {
                ItemBiz.DeleteItemFromCart(Id);
            }
           return RedirectToAction("ReturnView");

        }

和其他重新填充局部视图的动作方法:

 public ActionResult ReturnView()
        {
            CheckoutModel oCheckoutModel = new CheckoutModel();
            if (User.Identity.IsAuthenticated)
            {

                int CustomerId = MembershipBiz.GetCustomerIDByUserID(WebSecurity.CurrentUserId);
                //if (deliveryDate != null)
                oCheckoutModel.AllCartItems = ItemBiz.GetCartItemsByCustomerID(CustomerId);
            }

            List<CartInfoByStore> model = oCheckoutModel.AllCartItems;

            int count = model.Count();
            return PartialView("_CheckoutItemsList", model);
        }

我有另一个部分视图,我需要更新计数,但我不知道如何将此操作方法的计数传递给上面jquery post方法成功的部分视图。

请建议。

2 个答案:

答案 0 :(得分:0)

我提出了这个解决方案:

我删除后再调用另一个动作方法。如果有人找到更好的解决方案,请建议。

 $(".removeCartItem").click(function () {

            if (confirm("Click OK if you want to delete this record; otherwise, click 'Cancel'")) {

                var recordToDelete = $(this).attr("data-id");
                if (recordToDelete != '') {
                    // Perform the ajax post
                    $.post("/Cart/DeleteCartItem", { "id": recordToDelete },
                        function (data) {
                            $("#divStore").html(data);
                            $.ajax({
                                url: '/Cart/GetCartCount',
                                type: "POST",
                            }).done(function (count) {
                                $('#spCartCount').text(count);
                            });

                        });
                }
            }
            return false; 

        });

答案 1 :(得分:0)

如果你的要求只是在显示购物车商品列表后更新购物车数量,我建议的一件事是在_CheckoutItemsList局部视图中保留一个隐藏元素,其值为count。一旦部分视图通过ajax呈现,您可以将计数从隐藏元素复制到所需元素。