【发布时间】:2020-11-18 10:12:41
【问题描述】:
我正在从一本书中学习带有实体框架的 ASP.NET MVC,下面的示例是一个“删除”视图,其中列出了汽车的详细信息作为用户删除的确认页面。
单击删除链接后,表单将再次发布到绑定 Id 和时间戳的删除操作,然后尝试删除。如果删除因异常而失败,则会将错误添加到 ModelState,并向用户显示显示错误的相同删除视图。
删除 post 操作:(get 版本,此处省略,只是通过 Id 检索模型对象并显示下面的第一张图片)
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult Delete([Bind(Include = "Id,Timestamp")] Inventory inventory)
{
try
{
_repo.Delete(inventory);
}
catch (DbUpdateConcurrencyException ex)
{
ModelState.AddModelError(string.Empty, $@"Unable to delete record. Another user updated the record. {ex.Message}");
return View(inventory);
}
catch (Exception ex)
{
ModelState.AddModelError(string.Empty, $@"Unable to delete record: {ex.Message}");
return View(inventory);
}
return RedirectToAction("Index");
}
问题是,如果删除操作确实因异常而失败,则即使通过返回View(inventory)再次传递,页面也会丢失模型数据(库存)
如何在保留模型数据的同时显示错误页面?
【问题讨论】:
标签: asp.net asp.net-mvc entity-framework