Как заполнить два поля ввода (имя элемента, количество) из выпадающего списка в представлении бритвы asp.net core 2.0 - PullRequest
0 голосов
/ 16 апреля 2019

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

Имя элемента заполнено, но доступное количество отсутствует.

Секция контроллера

 public IActionResult Create(string masterid, string id)
        {
            var check = _context.Deliverydetails.SingleOrDefault(m => 
    m.customerInvoiceLineId == id);
            var selected = _context.Delivery.SingleOrDefault(m => 
    m.customerInvoiceId == masterid);
            ViewData["customerInvoiceId"] = new SelectList(_context.Delivery, 
    "customerInvoiceId", "invoiceNumber");
            ViewData["itemId"] = new SelectList(_context.Item, "itemId", 
    "itemName");
            ViewData["ShipmentStatusId"] = new 
    SelectList(_context.ShipmentStatus, "ShipmentStatusId", 
    "ShipmentStatusName");
            if (check == null)
            {
                Deliverydetails objline = new Deliverydetails();
                objline.delivery = selected;
                objline.customerInvoiceId = masterid;
                return View(objline);
            }
            else
            {
                return View(check);
            }
        }


      public JsonResult GetItemDetails(string ItemNo)
        {
            var ItemQuery = _context.Item.Where(x => x.itemId == ItemNo);
            return Json(ItemQuery);
        }

     **Create Order View**


      <div class="col-md-6">
                <div class="form-group">
                    <label asp-for="itemId" class="control-label"></label>
                    <select asp-for="itemId" class="form-control select2" 
      asp-items="ViewBag.itemId"></select>
                </div>
            </div>
       <div class="row">
            <div class="col-md-6">
                <div class="form-group">
                    <label asp-for="TotalQty" class="control-label"></label>
                    <input asp-for="TotalQty" class="form-control" />
                    <span asp-validation-for="TotalQty" class="text-danger"> 
       </span>
                </div>
            </div>

Javascript section
<script type="text/javascript">
    $(function () {
        $("#itemId").change(function (val) {
            var Itemdata = $(this).val();
            $.post('/DeliveryDetails/GetItemDetails', { ItemNo: Itemdata }).then(function (res) {
                console.log("response is", res);  //res is always empty
                $("#AvailableQty").val(res[0].Quantity);

            })
        });

    </script>

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Попробуйте следующие изменения в методе GetItemDetails и javascript

Если вы хотите получить количество товара в соответствии с itemId, вы можете запросить, как показано ниже:

var ItemQuery = _context.Item.Where(x => x.itemId == ItemNo).Select(x=>x.TotalQty);

И в обратном вызове $ .post (), если вы хотите заполнить поле ввода totalqty, вы должны добавить id ввода и установить значение totalqty, как показано ниже

 <input id="totalQty" asp-for="TotalQty" class="form-control" />

 $.post('/DeliveryDetails/GetItemDetails', { ItemNo: Itemdata }).then(function (res) {
                console.log("response is", res); 
                $("#result").val(res);

            })
0 голосов
/ 16 апреля 2019

Полагаю, вам нужно добавить атрибут [FromBody] в действие вашего контроллера.Это связано с тем, что в ASP.NET Core вам нужно выбрать , где вы читаете данные привязки к модели из

[HttpPost]
public JsonResult GetItemDetails([FromBody] string ItemNo)
{
    var ItemQuery = _context.Item.Where(x => x.itemId == ItemNo);
    return Json(ItemQuery);
}

. Я бы также явно указывал здесь [HttpPost], просточтобы обеспечить согласованную поверхность API, если вы не хотите выставить это действие через GET, а также POST по умолчанию?

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