重新加载特定视图MVC

时间:2017-03-06 08:27:17

标签: javascript jquery ajax

我在一个有购物篮的网页上工作。 我的问题是,当我添加新项目时,购物篮不显示元素数量。它仅在我手动重新加载页面后显示。但是我需要在添加新项目后立即显示项目数量。

这是将新项目添加到购物篮的按钮:

 <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()并没有解决我的问题。你能建议如何解决这个问题吗?谢谢!

0 个答案:

没有答案