【发布时间】:2017-10-26 20:06:06
【问题描述】:
我正在构建这个视图,用户可以在其中编辑多个项目并使用“更新”按钮一次保存一个。
问题:我无法使“更新”按钮正常工作。这是post方法:
[HttpPost, ActionName("Test")]
public async Task<IActionResult> TestPost(int id)
{
var machinetoUpdate = await _context.Machines
.SingleOrDefaultAsync(s => s.Id == id);
if (await TryUpdateModelAsync(
machinetoUpdate,
"",
s => s.MchName, s => s.StoreID, s => s.PUnit, s => s.Status))
{
try
{
await _context.SaveChangesAsync();
}
catch (DbUpdateException)
{
ModelState.AddModelError("", "Unable to save changes. " +
"Try again, and if the problem persists, " +
"see your system administrator.");
}
return RedirectToAction("Test");
}
return View(await _context.Machines.AsNoTracking().ToListAsync());
}
更新: 基本上,这段代码不起作用。我正在学习一个教程并尝试对其进行调整以适应我的需要,但这个简单的方法并没有保存对任何行所做的更改。
它不会抛出任何错误。
这是视图的代码:
@model IEnumerable<Application.Models.Machine>
@{
ViewData["Title"] = "Test";
}
<h2>Management</h2>
<hr />
<table class="table" asp-action="Test">
<thead>
<tr>
<th>Serial</th>
<th>Tienda</th>
<th>Precio por Jugada</th>
<th>Estado</th>
<th>Update</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
<div class="form-group">
<div class="col-md-10">
<input asp-for="@item.MchName" readonly class="form-control" />
<span asp-validation-for="@item.MchName" class="text-danger"></span>
</div>
</div>
</td>
<td>
<div class="form-group">
<div class="col-md-10">
<select asp-for="@item.StoreID" class="form-control" asp-items="ViewBag.StoreID">
<option value="">-- Seleccione Tienda --</option>
</select>
<span asp-validation-for="@item.StoreID" class="text-danger"></span>
</div>
</div>
</td>
<td>
<div class="form-group">
<div class="col-md-10">
<input type="number" max="10" step=".1" asp-for="@item.PUnit" class="form-control" />
<span asp-validation-for="@item.PUnit" class="text-danger"></span>
</div>
</div>
</td>
<td>
<div class="form-group">
<div class="col-md-10">
<select name="Status" asp-for="@item.Status" class="form-control">
<option value="0">Operativo</option>
<option value="1">Nuevo Item</option>
<option value="2">Reparación</option>
</select>
<span asp-validation-for="@item.Status" class="text-danger"></span>
</div>
</div>
</td>
<td>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<input type="hidden" value="@item.Id" name="Id" />
<input type="submit" value="Update" />
}
</td>
</tr>
}
</tbody>
欢迎任何帮助以及我在 Post 方法中可能做错的事情。提前致谢
【问题讨论】:
标签: asp.net http-post ienumerable