【问题标题】:ASP .NET MVC 3 - Handle errors that occur in ActionResult DeleteConfirmedASP .NET MVC 3 - 处理 ActionResult DeleteConfirmed 中发生的错误
【发布时间】:2012-04-04 18:12:11
【问题描述】:

在控制器中,创建/编辑 ActionResult 的错误可以使用 try-catch 块来处理,错误会显示在视图上(通过 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");

        }

【问题讨论】:

  • “没有出现错误”是什么意思?是否会抛出异常?
  • @ChristoferEliasson - 问题已得到澄清。
  • 可能其他两个操作方法都有 javascript,一旦结果传递到视图,就会处理消息的显示?

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2016-06-22
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 2010-09-27
    • 2011-08-25
    • 1970-01-01
    • 2011-11-20
    相关资源
    最近更新 更多