2012-05-09 46 views
0

我一直認爲我應該驗證JavaScript上的表單數據,當我點擊提交按鈕之後,此外我應該驗證在服務器端C#上提交的數據。

但現在我想我可能不需要驗證JavaScript上的表單數據?由於Ajax意味着頁面不會被重新加載,這意味着JavaScript之間的錯誤消息和C#錯誤消息之間的用戶沒有區別。
我是否應該實現客戶端和服務器端驗證?

奇怪的想法??

+0

答案沒有一個是ASP驗證器相當不錯,如果您的驗證要求非常簡單。他們將始終執行服務器端驗證(除非明確禁用或忽略),默認情況下也執行客戶端驗證。當它是一個選項時,我傾向於使用它們。 – Servy

回答

7

始終實現在服務器端驗證客戶端驗證反正有用防止往返到服務器。然後在考慮客戶端驗證之前確保驗證工作正常。原因是我看到許多人首先實現了客戶端驗證,然後忘記了服務器端驗證認爲他們正在驗證某些內容。客戶端驗證不應該被視爲驗證。它應該被看作是允許改善用戶體驗的東西(用戶無需提交整個表單即可獲得即時反饋)並保留帶寬。所以如果你想要這個額外的功能,那就繼續實施客戶端驗證。

1

通常,在服務器端和客戶端實現驗證是一種很好的做法(即使只有服務器端驗證是必需的)。

原因是因爲某人可以通過您的客戶端驗證來破壞您的域的完整性。

即使在驗證客戶端上的失敗

7

你應該總是驗證服務器端。

驗證客戶端是可選的,以增加可用性。

1

如果你只需要做1,服務器端肯定是要走的路。

儘管Ajax爲用戶提供了「錯覺」,表明該網頁沒有發佈,但您仍然在爲您的網站生成HTTP流量,這取決於您的託管情況,這可能會增加不必要的成本並加載您的Web服務器。

我的.02美分?今天有了所有漂亮的JS庫,沒有理由不實施客戶端驗證。

+1

那麼,不會想到的一個原因是它並不總是可能的。比如說,有人在註冊時輸入新的用戶名。您只能執行服務器端驗證以檢查用戶名是否已被使用。任何沿着這些線(你需要一個數據庫查詢來驗證數據)不能在客戶端完成。 – Servy

+0

這是100%正確的。我應該說盡可能實現客戶端驗證。 – smurtagh

+0

當驗證很複雜時,我在客戶端和服務器端實現所有相同的驗證令我困擾,並且它讓我連接數據庫。 – Nigiri

相關問題