2010-08-16 45 views
0

我有一個主 - 細節視圖,用於在ASP NET 3.5 MVC 1.0應用程序中添加,刪除和更新客戶。例如,用戶應該能夠從列表中選擇要編輯的客戶,並在頁面底部顯示詳細的表單以供他/她編輯客戶的數據。使用Ajax在ASP NET MVC驗證失敗時返回500錯誤可以嗎?

當用戶接受更改時,數據通過Ajax POST提交給服務器。驗證僅在服務器端執行。

  • 如果驗證失敗,我希望客戶數據的表單重新加載,顯示所有驗證錯誤。如果
  • 如果驗證成功,我希望整個客戶列表重新加載所有新客戶的數據(或者我只能重新加載正在編輯的客戶記錄)。

現在到了。我正考慮在第一種情況下返回帶有驗證錯誤的表單的部分視圖,或者在第二種情況下使用客戶列表的部分視圖。

爲了區別該頁面的一部分應該更新,返回一個500或200狀態碼,並使用Ajax 失敗succeess函數來執行更新。

我的問題是:使用500錯誤(內部服務器錯誤)來表示驗證失敗時,它在語義上是正確的嗎?或者我應該返回一個包含isValid布爾值以及HTML正文的JSON對象,並避免依賴於狀態碼?

謝謝!

回答

2

我一般認爲返回HTTP級別的錯誤是保留的,當事情實際上被破壞而不是處理應用程序層錯誤的方式。很像在邏輯數據驗證失敗時不一定要拋出異常。所以我會投票傳遞一個json結果對象來包裝錯誤(或不)。

0

這真的取決於你。在不瞭解所有需求,底層基礎設施和時間限制的情況下,無法做出判斷。