入門 我們知道
在整個 ASP+ 開發過程中
了解驗證非常重要
看看如今的大多數商業 Web 站點
您會發現
這些站點中有許多表單
這些表單明顯是通過執行大量手寫的代碼來執行驗證
編寫驗證代碼並不是一件有趣的工作
如果要通過編寫代碼來顯示數據表或動態生成圖表
可能會很吸引人
但是沒有人可以向他的同事證實這種很
酷
的方法能夠禁止在姓名字段中輸入空值
因為其它一些原因
Web 應用程序的驗證也是非常麻煩的
HTML
對您可以控制的內容或可以從用戶處得到的反饋的限制很多
因此無法應用在功能更全的客戶機上可以使用的技巧
例如禁止用戶輸入某些字符
或發出嘀聲
使用浏覽器腳本可能會產生更強大的驗證
但是這種方法很難得以證實
因為客戶浏覽器中並非一定有腳本
並且惡意的用戶可以繞過
因此
為了保證站點安全
有必要對服務器進行同樣的檢查
在開發 ASP+ 時
我們的初衷是只使用一個控件來處理驗證
可能本該是一個能夠顯示錯誤的 TextBox 控件
可是到了設計該控件時
卻發現無法實現這種願望
我們研究了大量的數據輸入表單
試圖找到可以適用於盡可能多的表單的一種解決方案
我們發現
數據輸入表單具有許多有趣的特性
盡管錯誤信息或圖標經常與輸入元素相鄰
但是它們幾乎總是位於表的不同單元格中
頁面中經常會有一個區域來匯總所有錯誤
許多站點包含客戶端腳本
以便提供更快捷的反饋
同時防止白白地在與服務器之間往返
許多包含客戶端腳本的站點在出現錯誤時會顯示信息框
不僅會驗證文本輸入
還會驗證下拉列表和單選按鈕
如果某個字段為空
站點通常會顯示與該條目無效時不同的信息或圖標
許多有效性檢查可以很好地代替常用的表達式
驗證通常是基於兩個輸入之間的比較結果
% 或
% 以上的驗證任務是一些常見的操作
例如檢查姓名或郵政編碼
大多數站點似乎仍在重復進行這些工作
因為站點之間的差別通常太大
無法獲得一種完美的解決方案來處理每個站點的所有驗證任務
考慮了上述所有情況
最終獲得的解決方案包括五個驗證器控件
ValidationSummary 控件以及與 Page 對象的集成
同時很明顯
該解決方案需要擴展
在客戶機和服務器上均需要有一個 API 來配合
我們在研究進行的各種驗證時發現
我們似乎需要一個更大的工具箱
在大多數組件環境中
例如 Microsoft® ActiveX®
我們可能本來試圖將所有驗證控件的功能集成到一個控件中
處理不同模式下的不同屬性
不過
幸好 Microsoft®
NET 框架中有神奇的繼承性
可以提供一套控件來對特定的屬性進行特定的驗證
因為派生每個新控件所需的額外工作量非常小
這些控件所完成的大多數工作均在其公用的父級 BaseValidator 中實現
您也可以從 BaseValidator 或其它控件派生來完成各項工作
實際上
即使 BaseValidator 都懶得實現其自己的 Text 屬性
而是從 Label 屬性繼承
何時發生何事? 在處理包含驗證 Web 控件的頁面時
了解事件序列非常有效
如果某個驗證條件是可選的
您需要准確了解客戶機和服務器上何時進行驗證
如果要自己編寫驗證例程
可能會非常耗時
或者有副作用
同時
了解調用驗證例程的時機也很重要
From:http://tw.wingwit.com/Article/program/net/201311/12495.html