невозможно обновить фактическое значение количества в asp. net ядро ​​2.2 - PullRequest
1 голос
/ 05 августа 2020

Я пытаюсь обновить количество в методе индекса. но кнопка отправки ввода в представлении индекса не может работать, поскольку эти данные не могут быть привязаны. Тем не менее, количество не обновляется, и я показываю значение количества, которое я уже использовал. но я хочу обновить это.

Вот мой код

namespace Amazon.Areas.Admin.Controllers
{
    [Area("Admin")]
    public class ShopController : Controller
    {
        private ApplicationDbContext _db;
        private IHostingEnvironment _he;

        public ShopController(ApplicationDbContext db, IHostingEnvironment he) //input parameter
        {
            _db = db;
            _he = he;
        }


       
        public IActionResult Index()
        {
            return View(_db.Shop.Include(c => c.Category).Include(f => f.SubCategory).ToList());
        }

        [HttpPost]
        public async Task<IActionResult> Index(Shop shop)
        {
            _db.Shop.Update(shop);
            await _db.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
    @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">&nbsp;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.Size)
                        </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>
                                <div class="input-group">
                                    <input type="submit" value="-" class="button-minus" data-field="quantity">
                                    <input type="submit" step="1" max="" value="@item.Quantity"  name="quantity" asp-for="@item.Quantity" class="quantity-field">
                                    <input type="submit" value="+" class="button-plus" data-field="quantity">
                                </div>
                            </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>
    }

мой результат

введите описание изображения здесь

когда я обновляю количество, используя счетчик, он не обновляет фактическое значение количества. Я новичок, помогите пожалуйста кому-нибудь.

1 Ответ

1 голос
/ 06 августа 2020

Если вы хотите сохранить значение, измененное щелчком по кнопке в базе данных, я думаю, вы можете это сделать.

View.cs html:

<div class="input-group">
                        <input type="submit" value="-" class="button-minus" data-field="quantity">
                        <input type="submit" step="1" max="" value="@item.Quantity" name="quantity" asp-for="@item.Quantity"class="quantity-field">
                        <input type="submit" value="+" class="button-plus" data-field="quantity">
                        <input type="hidden" name="Id" value="@item.Id" data-field="quantity"/>
                    </div>

js в поле зрения:

 $('.input-group').on('click', '.button-plus', function (e) {
            incrementValue(e);
            var fieldName = $(e.target).data('field');
            var parent = $(e.target).closest('div');
            var currentVal = parseInt(parent.find('input[name=' + fieldName + ']').val(), 10);
            var id = parseInt(parent.find('input[name=Id ]').val());
            $.ajax({ url: 'blogs/test', type: 'get', data: { "value": currentVal ,"id":id}, dataType: 'json', success: function (data) { console.log(data) } })
        });

        $('.input-group').on('click', '.button-minus', function (e) {
            decrementValue(e);
            var fieldName = $(e.target).data('field');
            var parent = $(e.target).closest('div');
            var currentVal = parseInt(parent.find('input[name=' + fieldName + ']').val(), 10);
            var id = parseInt(parent.find('input[name=Id ]').val());
            $.ajax({ url: 'blogs/test', type: 'get', data: { "value": currentVal, "id": id}, dataType: 'json', success: function (data) { console.log(data) } })
        });

контроллер:

public IActionResult  Test(int id,int value)
        {
            var blog=_context.Blogs.Find(id);
            blog.Quantity = value;
            _context.SaveChanges();
            return Json("ok");
        }
        public async Task<IActionResult> Index()
        {
           return View(await _context.Blogs.ToListAsync());
        }

результат: введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...