2012-09-07 44 views
1

我有以下問題: 我使用遠程驗證用於驗證字段,現在我想管理異常MVC3管理遠程驗證異常

public class ValidationController : Controller 
{ 
    List<string> values = new List<string>() { "AAAA", "BBBB" }; //blacklist 

    public JsonResult NameAllowed(string ID) 
    { 
     throw new Exception(); 
     //return Json(!values.Contains(ID), JsonRequestBehavior.AllowGet); 
    } 

} 

但在這種情況下,形式不提交(錯誤500通過網絡捕獲,開發工具欄),並沒有出現任何錯誤。

  1. 什麼是管理異常的最佳方法(例如Timeout和 不是可預測的異常)?
  2. 存在一個解決方案(任何服務器端參數)跳過這些錯誤提交表單?

預先感謝

回答

1

遠程驗證應當僅被用作圖形反饋到防止用戶無用的數據發送到服務器的客戶端。你應該ALWAYS有一個服務器端驗證所有你需要驗證的東西,如果你這樣做,那麼你的表單將被髮送但未被批准,並且你的驗證錯誤將與重新呈現的表單一起顯示,並且你的無效投入。

採取客戶端/遠程確認爲具有2目的

  1. 防止無用服務器端處理
  2. 給數據的響應更快的確認,而不是等待形式向「預驗證」被冒充。

但是他們應該永遠不會用於實際驗證數據。

編輯

這就是說,怎麼樣只是寫驗證代碼正確,使用try漁獲量,不要讓任何未經處理過的異常滑throught?

+0

感謝您的回答。我已經看到你提到的解決方案,嘗試捕獲,但是最好的做法是?你有沒有提供一些指導方針的文章? (不是msdn,我已經按照教程,但缺少這些信息) – Frank

+0

最佳實踐應該涉及修復您的代碼以防止拋出異常。有時候,這涉及到TryCatch。不過,我有一種感覺,對於一個遠程驗證者,你不應該需要嘗試捕獲。在你的驗證行爲中有一些東西可以用更好的方式寫出來。但如果實施得好,嘗試捕獲總是一件好事。 – Pluc