我想做一些简单的事情,但我是相当新的ASP MVC和答案逃避我…我试着遵循编辑方法背后的逻辑,但我搞得一团糟
对于一个简单的Model " order "有4个属性OrderId, Reference, DateIn, DateOut
我需要索引视图上的每一行按钮(订单),当点击将发布到控制器和更新DateOut属性与当前的DateTime和返回到索引。
我试图避免进入编辑视图,让我更新整个模型。
视图类似于
@model WebApp.Models.Order
.
.
.
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Reference)
</td>
<td>
@Html.DisplayFor(modelItem => item.DateIn)
</td>
<td>
@Html.DisplayFor(modelItem => item.DateOut)
</td>
<td>
<form asp-action="Index">
<input type="hidden" asp-for="@item.OrderId" />
<input type="submit" value="Update" class="btn btn-primary/>
</form>
</td>
</tr>
}
</tbody>
控制器
[HttpPost]
public async Task<IActionResult> Index(int? id, [Bind("DateOut")] Order order)
{
if (id != order.OrderId)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
order.DateOut = DateTime.UtcNow.AddHours(2);
_context.Update(order);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!OrderExists(order.OrderId))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index));
}
return View(order);
}
显然上面的代码有可怕的错误…
任何想法?
提前感谢!
好吧,我明白了…仍然很乱,但对我有用。如果有人感兴趣的话:
视图按钮:
<form method="post">
<input type="submit" value="Update" formaction="/Orders/Index/@item.OrderId" class="btn btn-primary />
</form>
控制器:
[HttpPost]
public async Task<ActionResult> Index(int? id)
{
var order = await _context.Orders.FindAsync(id);
if (order != null)
{
order.DateOut = DateTime.UtcNow.AddHours(2);
_context.Update(order);
await _context.SaveChangesAsync();
}
return RedirectToAction(nameof(Index));
}