【发布时间】:2021-12-16 15:29:11
【问题描述】:
我有一个编辑页面,我试图只更新一个字段,视图如下所示。我只允许用户更新项目数量的一个字段,OrderQuantity 是字段
...
<div class="form-group">
<label asp-for="OrderQuantity" class="control-label"></label>
<input asp-for="OrderQuantity" class="form-control" />
<span asp-validation-for="OrderQuantity" class="text-danger"></span>
</div>
</form>
<form asp-action="EditItem">
<input type="hidden" id="inventoryorderId" name="inventoryorderId" value="@Model.InventoryOrderId" />
<input type="hidden" id="inventoryId" name="inventoryId" value="@Model.InventoryId" />
<input type="hidden" id="orderedQuantity" name="orderedQuantity" value="OrderQuantity" />
<input type="submit" value="Edit" />
</form>
我需要将新输入的值传递给 EditItem 操作方法,因为根据新输入的值,我需要相应地更新库存数量,如下所示
public async Task<IActionResult> EditItem(int? inventoryorderId, int?
inventoryId, int? orderedQuantity)
{
var inventoryOrder = await _context.InventoryOrders
.FirstOrDefaultAsync(io => io.InventoryOrderId == inventoryorderId);
int curentQuantity = inventoryOrder.OrderQuantity;
inventoryOrder.OrderQuantity = (int)orderedQuantity;
_context.SaveChanges();
var intData = await _context.Inventories.FindAsync(inventoryId);
if ((int)orderedQuantity > curentQuantity)
{
intData.QuantityAvailable = intData.QuantityAvailable - ((int)orderedQuantity- curentQuantity);
_context.Update(intData);
await _context.SaveChangesAsync();
}
else if ((int)orderedQuantity < curentQuantity)
{
intData.QuantityAvailable = intData.QuantityAvailable + (curentQuantity - (int)orderedQuantity);
_context.Update(intData);
await _context.SaveChangesAsync();
}
return RedirectToAction("Index", "Orders", new { custEmail = "xyz@ff.org" });
}
我无法将新/更新的用户输入值传递给操作方法的问题
<input type="hidden" id="orderedQuantity" name="orderedQuantity" value="OrderQuantity" />
这会将 null 值传递给 orderedQuantity 到 EditItem 操作
<input type="hidden" id="orderedQuantity" name="orderedQuantity" value="@Model.OrderQuantity" />
将数据库中的旧值 orderedQuantity 传递给编辑操作
如何捕获用户输入的内容并将其传递给控制器,以便我可以执行一些计算
***** 编辑 ******
我试图删除两个表单,现在只有一个表单像
<form asp-action="EditItem">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
..............
<div class="form-group">
<label asp-for="OrderQuantity" class="control-label"></label>
<input asp-for="OrderQuantity" class="form-control" />
<span asp-validation-for="OrderQuantity" class="text-danger"></span>
</div>
<input type="hidden" id="orderId" name="orderId" value="@Model.OrderId" />
<input type="hidden" id="inventoryorderId" name="inventoryorderId" value="@Model.InventoryOrderId" />
<input type="hidden" id="inventoryId" name="inventoryId" value="@Model.InventoryId" />
<input type="hidden" id="orderedQuantity" name="orderedQuantity" value="OrderQuantity" />
<input type="submit" value="Edit" />
</form>
即使现在输入 OrderQuantity 的用户仍为 null
【问题讨论】:
标签: c# asp.net ajax asp.net-core entity-framework-core