我們知道,在整個 asp+ 開發過程中,了解驗證非常重要??纯慈缃竦拇蠖鄶瞪虡I web 站點,您會發現,這些站點中有許多表單,這些表單明顯是通過執行大量手寫的代碼來執行驗證。編寫驗證代碼并不是一件有趣的工作。如果要通過編寫代碼來顯示數據表或動態生成圖表,可能會很吸引人,但是沒有人可以向他的同事證實這種很“酷”的方法能夠禁止在姓名字段中輸入空值。
盡管 jscript 語言的標準化做得很好,但是用于與瀏覽器中的 html 文檔交互的文檔對象模型 (document object model, dom) 沒有廣泛采用的標準。因此,客戶端的驗證只在 internet explorer 4.0 和更高版本中進行,因為該驗證的對象是 internet explorer dom。
從服務器的角度來說,客戶端的驗證只意味著驗證控件將不同的內容發送到 html 中。除此之外,其事件序列完全相同。服務器端的檢查仍然執行。盡管看起來似乎多余,但是卻十分重要,因為:
默認情況下,腳本文件將安裝在 "_aspx" 目錄中默認的根目錄下,并使用相對于根的腳本 include 指令調用,該指令以正斜線開頭。該引用表明每個單獨的對象不必包含腳本庫,同一臺計算機上的所有頁面可以引用同一個文件。您會注意到,該路徑中還有一個公用的語言運行時版本號,以便不同的運行時版本可以在同一臺計算機上運行。
如果查看一下您默認的虛擬根目錄,您會找到該文件并查看其中的內容。這些文件的位置在 config.web 文件中指定。config.web 文件是一個用于大多數 asp+ 設置的 xml 文件。以下是該文件中位置的定義:
要使驗證可以在客戶端正常進行,該屬性必須與客戶端顯示的 html 元素的 value 特性對應。許多復雜的控件(例如 datagrid 和 calendar)在客戶端沒有值,只能在服務器上進行驗證。因此,只有最接近 html 元素的控件才可以參與驗證。此外,控件必須在客戶端具有單個邏輯值。因此,radiobuttonlist 可以被驗證,但是 checkboxlist 不可以。