Здесь есть серверный и клиентский компоненты.Во-первых, компонент представления - это только вещь на стороне сервера.Как только он будет обработан и сервер вернет ответ клиенту, тот факт, что это был компонент представления, совершенно несущественен.Все это на стороне клиента - это набор узлов в DOM.
На стороне клиента, если вы хотите обновить только некоторую часть страницы новой информацией с сервера, вам нужно сделать AJAX-запрос,Объект JavaScript, стоящий за этим XMLHttpRequest
, - это то, что вы бы назвали «тонким клиентом».Он просто делает запрос и получает ответ, но не выполняет ничего, как рендеринг, добавление материала в DOM и т. Д. Сам по себе.Вы, как разработчик, должны определить, как обрабатывать ответ от сервера и что с ним делать.
В связи с этим у вас есть несколько вариантов.Во-первых, вы можете сделать так, чтобы сервер возвращал частичное с некоторым HTML.Вы не можете запрашивать или возвращать свой компонент представления напрямую, поэтому вам потребуется действие, которое возвращает PartialView
, и соответствующее частичное представление, которое вызывает ваш компонент представления:
public IActionResult GetCart() =>
PartialView("_Cart");
Затем в _Cart.cshtml
:
@await Component.InvokeAsync("Cart");
В обратном вызове вашего запроса AJAX вы должны выбрать существующий родительский элемент «Корзина» на странице и заменить его новым HTML-кодом, возвращаемым с сервера.
Второй вариант - просто иметь конечную точку, которая возвращает текущее количество товаров в корзине в формате JSON.Например:
{
"items": 3
}
Затем в обратном вызове AJAX вы можете просто заменить текст значка на этот номер.