Я пытаюсь реализовать окно информации о продукте, в котором есть частичное представление, отвечающее за отображение количества товара на складе. Количество товара на складе представлено отдельной связанной таблицей ProductCount. Мне нужно добавить количество продукта без перезагрузки представления и перезагрузить только частичное представление. Для этого я решил использовать jQuery AJAX. Метод решения был основан на материалах этого ответа: «ссылка». Но я столкнулся с неизвестными мне проблемами.: Во-первых, у меня возникают трудности с получением значения из поля ввода, а во-вторых, при попытке выполнить функцию появляется неизвестное мне сообщение
Код скрипта:
Код: Выделить всё
function addQuantityClicked() {
var Url = '@Url.Action("QuantityAdd", "Home")';
$.ajax({
url: Url,
type: 'POST',
data: { idProduct: @Model.Product.Id, quantity: alert($("#qnt").val) }
})
}
Код: Выделить всё
@using vp_server.Models.ViewModels
@model vp_server.Models.ViewModels.ProductViewsTransactions
The quantity at the moment: @Model.Count
Entrance:
I also tried to use
Код: Выделить всё
document.getElementById("qnt").value
Код: Выделить всё
.value
Strange message when trying to execute the script
The code of the controller method:
Код: Выделить всё
[HttpPost]
public async Task QuantityAdd(int idProduct, int quantity)
{
using (VapeshopContext db = new VapeshopContext())
{
ProductCount? productCount = db.ProductCounts.Where(pc => pc.ProductId == idProduct).FirstOrDefault();
if (productCount != null)
{
productCount.Count += quantity;
}
await db.SaveChangesAsync();
return PartialView();
}
}
I partially changed the JS code and removed .ajax to test the script and left a test message in
Код: Выделить всё
.alert
Код: Выделить всё
.ajax
Код: Выделить всё
.alert
Код: Выделить всё
$(function () {
$("#btnPost").click(function () {
alert("Test")
$.ajax({
type: "POST",
url = "/Home/QuantityAdd",
data: { "idProduct": @Model.Product.Id, "quantity": $("#qnt").val() }
})
})
})
Источник: https://stackoverflow.com/questions/781 ... sing-jquer