我在一个有购物篮的网页上工作。 我的问题是,当我添加新项目时,购物篮不显示元素数量。它仅在我手动重新加载页面后显示。但是我需要在添加新项目后立即显示项目数量。
这是将新项目添加到购物篮的按钮:
<button type="button" class="btn btn-success" onclick="addtoBasket(this)" id="addToBasket" data-id=@c.ID>Add</button>
这是ajax电话:
<script>
function addtoBasket(obj) {
var $button = $(obj);
var testId = $button.data("id"); //reading the data-id of clicked button
var UrlSettings = {
url: '@Url.Action("SetShoppingCartElement", "Purchase")'
}
$.ajax({
url: UrlSettings.url,
data: { 'id': testId },
type: "post",
cache: false,
success: function (data) {
location.reload();
},
error: function (xhr, ajaxOptions, thrownError) {
}
});
}
这是我在控制器中的ActionResult:
public ActionResult SetShoppingCartElement(string id)
{
int productId = int.TryParse(id, out productId) ? productId : 0;
Product product = productRepository.GetProductByID(productId);
List<Product> list = HttpContext.Session["ShoppingCart"] as List<Product>;
if (list == null)
list = new List<Product>();
bool alreadyExists = list.Any(x => x.Id == product.Id);
if (!alreadyExists)
{
list.Add(product);
Session["ShoppingCart"] = list;
Session["ShoppingCartCount"] = list.Count;
}
return View();
}
会话[&#34; ShoppingCartCount&#34;]设置正确,但仅在页面刷新后才显示结果。会话[&#34; ShoppingCartCount&#34;]显示在布局视图上。 location.reload()并没有解决我的问题。你能建议如何解决这个问题吗?谢谢!