У меня проблема с событием Ajax по щелчку, которое несколько раз запускает действие контроллера/ViewComponent.
Я использовал Ajax по нажатию кнопки, чтобы вызвать действие контроллера, которое вставляет некоторые данные в базу данных, а затем перенаправляется на действие индекса контроллера/ViewComponent.
Каждый раз, когда нажимается кнопка, запускается все больше и больше событий Ajax (вставляются повторяющиеся данные).
Вот моя установка:
Кнопка Добавить в корзину:
<a asp-action="Add" asp-controller="Cart" asp-route-id="@x.ItemID"
ajax-call="y" ajax-res="cart" class="btn btn-info">Add to Cart</a>
JS:
$("a[ajax-call='y']").click(function (event) {
$(this).attr("ajax-call", "n");
event.preventDefault();
var urlCall = $(this).attr("href");
var divRes = $(this).attr("ajax-res");
$.ajax({
type: "GET",
url: urlCall ,
async: true,
success: function (data) {
$("#" + divRes).html(data);
}
});
});
КорзинаКонтроллер:
public IActionResult Index() => ViewComponent("Cart");
public IActionResult Add(int id)
{
... adds into db ...
return RedirectToAction("Index");
}
CartViewComponent ~ "Корзина":
public IViewComponentResult Invoke()
{
... populates view model ...
return View(Model);
}
Я загружаю свои файлы JS в общий _Layout.cshtml. Я использую PartialView, из которого нажимается кнопка Добавить в корзину, хотя я думаю, что это нормально, или это каким-то образом вызывает эту проблему?
Я начал изучать ASP.NET совсем недавно, поэтому надеюсь, что не упустил ничего очень простого.
Спасибо!