我正在开发一个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方法成功的部分视图。
请建议。
答案 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呈现,您可以将计数从隐藏元素复制到所需元素。