通过单击一个按钮来分配DateTime,从视图中更新单个模型属性.现在是价值模型



我想做一些简单的事情,但我是相当新的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));
}

最新更新