2012-10-28 44 views
1

ASP.Net MVC 3,Kendo UI Web。返回邏輯錯誤的最標準/最正確的方法是什麼?

典型示例 - 有一個數據庫和一些表,用戶正在編輯數據 - 添加新條目,刪除,更新。

除了技術問題(網絡連接斷開)之外,還可能存在多個邏輯問題 - 例如,用戶沒有寫入任何內容的權限,或者數據鎖定,或者用戶嘗試更新被刪除的內容同時,等等。

所以我想在這種情況下返回一個錯誤,所以我可以用Kendo處理它並顯示,讓我們說一些警告對話框(JS alert)。

現在 - 什麼是最好的設計方式,最正確的做法呢?我不是在尋找「哦,它只是有效」的方法。

拋出HttpException在這種情況下,一個好主意(我有我與它的問題,因爲它是HTTP例外,我嘗試通過錯誤無關以http真的)?

回答

1

我打算假設您正在使用Kendo DataSource對象,該對象以自綁定模式存在於大多數小部件上(已定義傳輸部分並激發它自己的CRUD請求)。

您網格的CRUD所綁定的操作應該返回IEnumerable.ToDataSourceResult,作爲輸入接收的模型。如果在處理中檢測到錯誤,請通過ModelState.AddModelError方法將它們添加到ModelState中,您可以在該操作中訪問它。 ToDataSourceResult會自動檢測ModelState對象中的任何錯誤,並將它們序列化到JSON響應(錯誤字段)中。然後即使在客戶端也可以通過訂閱DataSource.error來處理它們(請參閱http://docs.kendoui.com/api/framework/datasource#error)。

+0

非常感謝(也用於閱讀各行)。有一個問題 - 我假設通過ModelState傳遞錯誤是一個通用的解決方案,對嗎? *至於劍道我有一個問題(劍道) - 錯誤處理程序被觸發,警告顯示,但儘管如此,框架假設沒有錯誤在同一時間(一些矛盾),並盲目更新控制(所以刪除例如 - 在用戶界面行被刪除)* – greenoldman

+1

我知道你的意思,我碰到了這個問題,這是我不使用自我綁定與劍道的主要原因。我碰到了許多問題,我經常需要做更高級別的協調,然後這些功能允許。考慮使用MVVM模式,使用telerik自己的MVVM框架或我個人最喜歡的Knockout。然而,對於這種特定的場景,我會調用transport.read來重新使用數據庫中的「新鮮」副本將控制重新綁定到服務器數據。 – macsux

+0

再次感謝您提供非常豐富的答案! – greenoldman

相關問題