ASP .NET MVC 3 - 处理ActionResult DeleteConfirmed中发生的错误

时间:2012-04-04 18:12:12

标签: asp.net-mvc-3 error-handling controller

在控制器中,可以使用try-catch块处理创建/编辑ActionResult的错误,并在视图上显示错误(通过ModelState.AddModelError)。

现在我尝试使用DeleteConfirmed ActionResult进行类似的操作,但视图页面上没有出现错误。我试图删除的表应该抱怨删除外键字段值。

我应该以不同的方式更改RedirectToAction还是添加其他内容?

 [HttpPost, ActionName("Delete")]
        public ActionResult DeleteConfirmed(int id)
        {
            try
            {
                StatusList statuslist = db.Status.Find(id);
                db.Status.Remove(statuslist);
                db.SaveChanges();
            }
            catch (DataException dex)
            {
                ModelState.AddModelError("", dex.Message);
                return RedirectToAction("Delete");

            }
                return RedirectToAction("Index");

        }

1 个答案:

答案 0 :(得分:1)

如果进行重定向,则会丢失ModelState。 所以你可以做两件事imo。

  1. TempData [“myerrorkey”] = dex.Message中设置错误消息,因此消息将“存活”为一次重定向
  2. 更改您的方法,如果出现错误,请返回视图,以便在重定向期间不会消除模型状态
  3. 我个人会选择第一个。所以你也可以考虑在删除的情况下实现TempData,告诉用户在索引页面中,一切顺利。