1

在 mvc 4 中(但我认为在所有 mvc 版本中)我需要拦截 DbEntityValidationException。

在这个阶段,我需要在一个简单的日志中显示这个对象中的错误。

在捕获中,我有以下代码:

foreach (var eve in EventityValidationErrors)
   {
        foreach(var ve in eve.ValidationErros)
       {
         Console.Writeline(ve.PropertyName,ve.ErrorMessage)
       }
    }

它非常有用。

现在,我的工作是尝试在视图中显示此异常信息(仅在开发阶段)。

有人知道是否有快速的方法吗?(理想情况下使用外部 nuget 组件)

4

1 回答 1

0

Elmah有一个nuget 包,并提供了一种快速显示详细错误的方法。

你需要稍微改变一下你的渔获。那就是捕获你的异常,创建一个新的异常,其中包含你的数据,然后抛出这个异常并让 Elmah 处理它。

catch(DbEntityValidationException dbEx)
{
   var sb = new StringBuilder();
   foreach (var eve in dbEx.EntityValidationErrors)
   {
        foreach(var ve in eve.ValidationErrors)
       {
         sb.Append(ve.PropertyName);
         sb.Append(ve.ErrorMessage); //format to your needs
       }
    }
  var detailedException = new Exception(sb.ToString(), dbEx)
}

有很多关于如何设置 Elmah 来捕获所有未处理的 mvc 异常的文档。

于 2012-11-21T11:33:45.173 回答