簡體   English   中英

減去數據庫值

[英]Subtraction on database value

我在將用戶輸入的數量減去當前庫存數量時遇到問題。 這是我的代碼。

這是我的一些代碼。 我在ItemReg索引中有一個鏈接,點擊后將打開withdraw.cshtml ,當用戶在輸入框中輸入一個值時,該值將被扣除到數據庫中。

控制器

public IActionResult Withdraw(int? id, int quantity)
     {
          return View(_context.ItemRegs.Find(id));
     }

public async Task<IActionResult> Withdraw([Bind("ItemId,Qty")] ItemReg itemReg,int? id, int quantity) 
        {
            if (ModelState.IsValid) {

                var itemreg = _context.ItemRegs.Find(id);
                itemreg.Qty = itemreg.Qty - quantity;
                _context.Update(itemReg);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }

            return View(itemReg);
        }

撤回.cshtml

@model Intranet.Models.ItemReg

@{
    ViewData["Title"] = "View";
}

<h4>ItemReg</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="View">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <input type="hidden" asp-for="ItemId" />
            <div class="form-group">
                <label asp-for="Qty" class="control-label"></label>
                <input name="quantity" asp-for="Qty" class="form-control"/>
                <span asp-validation-for="Qty" class="text-danger"></span>
            </div>
        <div class="form-group">
            <input type="submit" value="Save" class="btn btn-primary" />
        </div>
        </form>
    </div>
</div>

<div>
    <a asp-action="Index">Back to List</a>
</div>

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

您正在使用 id 作為Find(id)的來源。 嘗試在您的Find(itemReg.ItemId)傳遞itemReg.ItemId ,因為您的隱藏字段是ItemId

<input type="hidden" asp-for="ItemId" />

未使用模型中的綁定,請嘗試使用您的 model.Id

var itemreg = _context.ItemRegs.Find(itemReg.ItemId);
itemreg.Qty = itemreg.Qty - quantity;
_context.Update(itemReg);

我不確定這是否是一個好的做法,但這回答了我的問題。

public async Task<IActionResult> Withdraw([Bind("ItemId,Qty")] ItemReg itemReg,int quantity) 
        {
            ViewBag.qty = quantity;
            //if (ModelState.IsValid) {
                var itemreg = _context.ItemRegs.Find(itemReg.ItemId);
                itemreg.Qty = itemreg.Qty - ViewBag.qty;
                itemReg.UserName = ViewBag.DisplayName;
                itemreg.UserIP = HttpContext.Connection.RemoteIpAddress.ToString();
                itemreg.UserDate = DateTime.Now.ToString("MM/dd/yyyy");
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            //}
            //return View(itemReg);
        }

我評論了 if 語句,然后在參數中添加了 int 數量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM