2012-11-21 64 views
1

在mvc 4(但我認爲在所有mvc版本中)我需要攔截DbEntityValidationException。MVC 4 - 例外助手

在這個階段,我需要在一個簡單的日誌中顯示這個對象的錯誤。

在catch,我有這樣的代碼:

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

,它是非常有用的。

現在,我的工作是試圖在視圖中顯示此異常信息(僅在開發階段)。

有人知道是否有快速的方法來做到這一點? (理想情況下帶有外部nuget組件)

回答

0

Elmah有一個nuget package並提供了一種快速顯示詳細錯誤的方法。

您需要稍微改變一下。那是抓住你的異常,創建一個新的異常,其中包括你的數據,然後拋出這個異常,讓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異常的文檔。