2011-04-12 27 views
1

我使用Telerik Extensions for ASP.NET MVC,在網格上使用Ajax數據綁定。我使用的是整個控制器類的HandleError屬性,就像這樣:我可以在Telerik [GridAction]上使用[HandleError]嗎? (Telerik MVC)

[的HandleError]
公共類myController的:控制器 {...

和錯誤處理的常規操作方法,工作正常。但是,在[GridAction]方法中,例如處理插入新網格記錄的方法,我無法繞過缺省使用的dang「500 - Internal Server Error」彈出窗口。我希望能夠吐出一個異常,以便用戶可以明白爲什麼他們的記錄沒有被插入,但Telerik GridAction方法和HandleError似乎不想一起玩。

有人在那裏和/或做過嗎? 謝謝, 戴夫

回答

2

我剛纔用這個http://www.telerik.com/community/forums/aspnet-mvc/grid/how-to-return-error-information-to-grid-in-ajax-editing-mode.aspx

排序的問題,對我來說。

其實,我只是需要處理來自電網的.OnError事件:

.ClientEvents(events => events 
    .OnLoad("onLoad") 
    .OnError("onError") 
) 

<script type="text/javascript"> 
function onLoad(e) { 
    $(this).find('.t-no-data td').text('Loading...'); 
} 

function onError(e) { 
    if (e.textStatus == 'error') { 
     if (e.XMLHttpRequest.status == "500") { 
      alert("The server was unable to process your request.\n" + e.XMLHttpRequest.responseText); 
      e.preventDefault(); 
     } 
    } 
} 
</script> 
+0

謝謝,我卻看到了那個帖子,但..如果有什麼錯誤不在的ModelState?例如如果在我調用TryUpdateModel()的時候拋出sqlexception,當我調用我的dataContext來保存數據時?如果我不夠清楚,請告訴我 - 如有必要,我可以發佈代碼示例。 tx .. – dizzwave 2011-04-13 18:42:48

+1

我通過包裝DbContext.SaveChanges()並捕獲任何異常來解決此問題。從這些我建立一個這樣的字典: 'code' var reply = new Dictionary (); 嘗試 { MyContext.SaveChanges(); //只是讓異常發生 } \t \t \t} 趕上(DbEntityValidationException前) { 的foreach(在ex.EntityValidationErrors變種E) { \t的foreach(VAR在e.ValidationErrors陽離子) { \t答覆。添加(ve.PropertyName,ve.ErrorMessage); \t} } } return reply; – 2013-03-15 04:53:04

+0

對不起以前評論的格式 - 我無法使'code' thingy工作.... – 2013-03-15 05:00:44

0

onerror事件將在以下場合提出:

  1. 未找到請求的URL(404 HTTP代碼)
  2. Unha ndled .NET異常(500 HTTP代碼)
  3. 的ModelState錯誤
  4. 超時