0

在控制器中,可以使用 try-catch 块处理 Create/Edit 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");

        }
4

1 回答 1

1

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

  1. 在TempData ["myerrorkey"] = dex.Message中设置错误消息,因此消息将“存活”一次重定向
  2. 更改您的方法,并在出现错误的情况下返回一个视图,以便在重定向期间不会清除模型状态

我个人会选择第一个。所以你也可以考虑实现 TempData 以防删除告诉用户,在索引页面中,一切都很顺利。

于 2012-04-04T20:11:50.470 回答