2011-09-09 284 views
2

我的問題是有一個真正的死鎖情況超過驗證的目的。平衡asp.net服務器端驗證與客戶端jQuery驗證

我可以在ASP.net

  1. 做驗證兩件事情使用驗證控件
  2. 使用jQuery

現在有幾種情況:

  1. 如果我使用jQuery我無法使用服務器端page.isvalid方法從t執行驗證他服務器端。

  2. 如果我使用驗證控件實際加載驗證控件的頁面。它使頁面變得龐大。所以我想避免那部分。我不希望帶寬較低的客戶端非常緩慢地加載頁面。由於這些驗證控件生成視圖狀態和自定義驗證JavaScript。

  3. 如果在瀏覽器中關閉JavaScript調試或關閉JavaScript執行。客戶端的jQuery和驗證控件都不會發生。所以在這種情況下,我唯一的選擇是使用page.isvalid方法從服務器端驗證表單。

現在有可能考慮所有這三種情況,並執行服務器端驗證,因爲JavaScript驗證是脆弱的我真的不想依賴它。但同時我看到服務器端控件,它們非常笨重,所以不犧牲我的帶寬(這絕對不是我想要的,我傾向於使用JavaScript驗證)。此外,如果我的jQuery由於JavaScript執行已關閉而失敗。如何執行服務器端驗證,而無需使用任何驗證控件?

+2

我不確定我關注。服務器端驗證應該完全獨立於客戶端驗證。無論如何,永遠不要相信客戶端輸入 - 始終在服務器端進行驗證。 – NullUserException

回答

1

我認爲你高估了使用驗證控件的成本。它確實爲頁面增加了一些開銷,但並不像你想象的那麼多。如果你想使用Page.IsValid,我會建議使用驗證控件。由於性能方面的原因,我從來不知道任何人遠離他們。

+0

是的,我同意客戶端驗證不可信任的觀點...如果有50個輸入控件,則仍然存在。我必須爲他們放置50個驗證控件...請原諒我,如果我錯了,因爲我對這個很新鮮..所以不加起來到頁面的視圖狀態並增加網絡延遲?我提到我的觀點。並有任何其他方式我可以提供服務器端驗證除了page.isvalid +驗證控件? – Joy

1

+1張貼到現在雙方的意見,但我想補充一點,即使要始終進行服務器端驗證,客戶端驗證是好的,因爲它提供即時反饋給用戶,而不是發佈返回整個頁面並等待幾秒鐘以返回錯誤列表。例如,在移動開發中,客戶端驗證非常重要,因爲網絡延遲通常較大,您希望儘可能保證所提交的輸入將一次通過服務器端的驗證。

總之,客戶端驗證永遠不應該被信任,但應該始終執行。

作爲一個品味的問題,我寧願使用JQuery執行驗證,而不是任何asp.net驗證控件。

+0

@lcarus jquery是一個不錯的選擇,但我想平衡服務器端+客戶端網站..但正如我在上面評論中提到的服務器端驗證只通過page.Isvalid +驗證控件完成。有沒有其他具體的方式可以做到這一點?除了驗證控制? – Joy