Я хотел обновить значение количества. для этого я использую метод HTTPPost индекса для количества обновлений. но не могло из-за ошибки. вот мой код:
public IActionResult Index()
{
return View(_db.Shop.Include(c => c.Category).Include(f => f.SubCategory).ToList());
}
[HttpPost]
public IActionResult Index(int? id)
{
var product = _db.Shop.Where(x => x.Id == id).FirstOrDefault();
IndexVm ji = new IndexVm
{
Id = product.Id,
Image = product.Image,
Image1 = product.Image1,
Quantity = product.Quantity++,
Price = product.Price,
PreviousPrice = product.PreviousPrice,
Description = product.Description,
};
_db.Shop.Update(ji);
_db.SaveChanges();
return RedirectToAction(nameof(Index));
}
Index.cs html
@using Amazon.Models
@model IEnumerable<Shop>
@{
ViewData["Title"] = "Index";
}
<br /><br />
<div class="row">
<div class="col-6">
<h2 class="text-info">Product List</h2>
</div>
<div class="col-6 text-right">
<a asp-action="Create" class="btn btn-info"> Add New Product </a>
</div>
</div>
<form asp-action="Create" method="post" enctype="multipart/form-data">
<div>
<table class="table table-striped border" id="myTable">
<thead>
<tr class="table-info">
<th>
@Html.DisplayNameFor(c => c.Name)
</th>
<th>
@Html.DisplayNameFor(c => c.Price)
</th>
<th>
@Html.DisplayNameFor(c => c.PreviousPrice)
</th>
<th>
@Html.DisplayNameFor(c => c.Quantity)
</th>
<th>
@Html.DisplayNameFor(c => c.Description)
</th>
<th>
@Html.DisplayNameFor(c => c.Quantity)
</th>
<th>
@Html.DisplayNameFor(c => c.CategoryTypeId)
</th>
<th>
@Html.DisplayNameFor(c => c.SubCategoryTypeId)
</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr class="text-info">
<td> @item.Name </td>
<td> @item.Price </td>
<td> @item.PreviousPrice </td>
<td>@item.Quantity</td>
<td>
<partial name="_QuantityPartial" model="@item.Id" />
</td>
<td> @item.Description </td>
<td> @item.Size </td>
<td> @item.Category.CategoryName </td>
<td> @item.SubCategory.SubCategoryName </td>
<td>
<partial name="_DeletePartial" model="@item.Id" />
</td>
</tr>
}
</tbody>
</table>
</div>
</form>
<br /> <br />
@section scripts{
<script type="text/javascript">
$(document).ready(function () {
$('#myTable').DataTable();
});
</script>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script>
function incrementValue(e) {
e.preventDefault();
var fieldName = $(e.target).data('field');
var parent = $(e.target).closest('div');
var currentVal = parseInt(parent.find('input[name=' + fieldName + ']').val(), 10);
if (!isNaN(currentVal)) {
parent.find('input[name=' + fieldName + ']').val(currentVal + 1);
} else {
parent.find('input[name=' + fieldName + ']').val(0);
}
}
function decrementValue(e) {
e.preventDefault();
var fieldName = $(e.target).data('field');
var parent = $(e.target).closest('div');
var currentVal = parseInt(parent.find('input[name=' + fieldName + ']').val(), 10);
if (!isNaN(currentVal) && currentVal > 0) {
parent.find('input[name=' + fieldName + ']').val(currentVal - 1);
} else {
parent.find('input[name=' + fieldName + ']').val(0);
}
}
$('.input-group').on('click', '.button-plus', function (e) {
incrementValue(e);
});
$('.input-group').on('click', '.button-minus', function (e) {
decrementValue(e);
});
</script>
}
_QuantityPartial.cs html
@model int
<form method="post">
<td style="width:150px">
<div class="btn-group">
@*<a asp-action="Index" class="btn btn-danger" asp-route-id="@Model">Add</a>*@
<input type="submit" asp-action="Index" asp-route-id="@Model" value="+" />
</div>
</td>
</form>
и вот мой результат и вот мой результат ниже. Я хочу что-то подобное. Я действительно хочу, чтобы когда я нажимал "+", количество обновлялось. и вот мой результат ниже. Я хочу что-то подобное. Я действительно хочу, чтобы когда я нажимал «+», количество обновлялось. для этого здесь я использую метод HTTP post (index), но обнаружил ошибку. для этого я не могу обновить свои количественные данные.
введите описание изображения здесь
Я новичок, помогите пожалуйста.