一些建議後,我的解釋是用於以下情形正確:MVC3 .NET - 當使用客戶端驗證場景
它創建/更新簡單的畫面(2周獨立的觀點 - 創建視圖和更新視圖)的用戶記錄。
屏幕包含3個字段: 名稱, 電話號碼, 國民保險號碼(NI號)
我們有驗證: 電話號碼(以確保它是正確的格式) NI數(以確保它是正確的格式)
上有NI數唯一索引在數據庫中
這是我的理解 - 以人告訴我這是錯誤的或者是有BETT完全開放呃...
因此,如果輸入新記錄,我們需要檢查NI編號是否唯一 - 因此我們必須POST和運行服務器端驗證 - 這意味着Javascript驗證是無關緊要的 - 並且所以所有的驗證都必須在服務器端進行。
如果從數據庫中檢索記錄然後更新記錄,如果NI編號未更新,則客戶端驗證是相關的。因爲我總是需要確保NI編號是唯一的,所以我不需要任何客戶端驗證例程,而對於更新視圖,我確實需要客戶端驗證例程作爲NI編號可能不會更新,但我們仍然希望驗證其他字段(需要的話)客戶端,以儘量減少網絡流量。
對嗎?
感謝
感謝您的快速響應 - 只是爲了澄清 - 複雜的驗證,如獨特性,即。 NI編號是在服務器上完成的,因此在這種情況下客戶端驗證代碼變得無關緊要 - 所以讓服務器進行所有驗證。如果現有記錄更新且NI未更改,則客戶端代碼是相關的。 – user1079925 2012-01-12 12:31:58
爲什麼它不相關?當名稱或電話號碼不正確時,客戶端驗證可防止到服務器的旅程。只有當這些字段是正確的,你將不得不在服務器上檢查NI(這也可以通過Ajax進行) – Pbirkoff 2012-01-12 15:38:45