ASP.Net Core MVC. Как обновить только ViewComponent, без перезагрузки всей страницы?

Есть представление страницы с товарами. На ней отображена, через частичное представление, корзина. На самой корзине, при добавлении товара в нее (нажатие кнопки "добавить в корзину") появляется кружок с количеством заказов и в контроллере происходит добавление в поток новых записей, а так же возвращение страницы. Проблема в том что сейчас метод контроллера обновляет полностью всю страницу, а мне нужно что бы обновлял только цифру на корзине
public IActionResult AddToCart(int productId, string returnUrl, int quantityInProduct)
        {
            Product product = repository.Products.FirstOrDefault(p => p.ProductID == productId);
            if (product != null)
            {
                cart.AddItem(product, quantityInProduct);
            }
            return RedirectToAction("List", "Product", new { returnUrl });
        }

если я пишу вот так return ViewComponent("CartSummary"); то возвращает только частичное представление без всей страницы.

вот код частичного представления:
@model Cart

<div style="width: 100px; z-index: 3;">
    <span>
        @Model.ComputeTotalValue().ToString("c")
    </span>
    <a class="iconCart"
       asp-controller="Cart" asp-action="Index"
       asp-route-returnurl="@ViewContext.HttpContext.Request.PathAndQuery()">
    </a>
    @if (Model.Lines.Count() > 0)
    {
        <span class="cartSum">
            @Model.Lines.Sum(x => x.Quantity)
        </span>
    }
</div>

а вот компонент:
public class CartSummaryViewComponent : ViewComponent
    {
        private Cart cart;
        public CartSummaryViewComponent(Cart cartService)
        {
            cart = cartService;
        }
        public IViewComponentResult Invoke()
        {
            return View(cart);
        }
    }
  • Вопрос задан
  • 786 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы