1. 程式人生 > >ASP.NET中的驗證控件

ASP.NET中的驗證控件

spl 允許 需要 解決 ova 自帶 mar integer object

ASP.NET提供了如下的控件:
  RequiredFieldValidator: 字段必填 (ControlTovalidate設定要驗證的控件)
  RangeValidator: 值在給定的最大值,最小值之間()
  CompareValidator: 用於比較兩個值的關系是否滿足要求或者是否是指定類型的數據
  RegularExpressionValidator: 校驗數據滿足正則表達式
  CustomValidator: 自定義驗證

Validator驗證控件的共性

IsValid屬性,用來判斷頁面中的所有Validator是否都校驗通過,只有都校驗通過才為True,
校驗數據時必需判斷該值,做出相應的措施
Display屬性, 所有的驗證控件都有,用來決定如何顯示錯誤作息,一共有三個值:
Static: 占位隱藏,visiblity樣式為hidden來實現隱藏
Dynamic: 不點位隱藏,display模式為none來實現隱藏
ValidationGroup屬性, 驗證組,當一個頁面同時放置註冊和登錄表單時,驗證就會同時進行,當登錄時,
註冊驗證也會觸發,可以使用驗證組來解決,將同一組的控件(表單,提交按鈕,Validator)
中的ValidationGroup屬性設置一樣就行了
如果將按鈕控件的CausesValidation屬性設置為false,則這個按鈕的點擊不觸發校驗
幾乎所有的控件都有ControlToValidat,Text屬性,所有控件都幾乎在客戶端和服務器端都要進行校驗
除了非空驗證控件外,其它幾個默認都不會對非空進行校驗,如果要不允許為空則需要手動設置

1. RequiredFieldValidator: 字段必填
  ControlTovalidate 設定要驗證的控件
  ErrorMessage 設置錯誤輸出信息與下面一樣
  Text 為當被驗證的控件為空的時候顯示的錯誤信息,也可以寫任何HTML內容,有時候控件如果有默認值也要認為空值的話,只要將 InitialValue 設置為那個默認值就行

2. RangeValidator: 驗證值的範圍
  ControlTovalidate 設定要驗證的控件
  MinimumValue 最小值
  MaximumValue 最大值
  Type 類型(String,Integer,Double,Date,Currency等)

3. CompareValidator: 比較驗證控件
  ControlTovalidate 設定要驗證的控件
  Type 類型(String,Integer,Double,Date,Currency等)
  Operator 比較操作符,可選值DataTypeCheck,Equal,GreaterThan,GreaterThanEqul等
  ValueToCompare 比較指定的值
  ControlToCompare 設定與另外一個控件進行比較

4. RegularExpressionValidator: 校驗數據滿足正則表達式
  ControlTovalidate 設定要驗證的控件
  ValidationExpression 指定正則表達式,自帶一些常用的

5. CustomValidator: 自定義驗證
  ServerValidate事件 服務端校驗代碼,在事件處理讀取args.Value來獲得待校驗的值合法則將 args.IsValid 設置為true,否則為 false
  ClientValidationFunction事件 客戶端校驗代碼(一個函數名),代碼需要手動在<script>中寫

技術分享
//服務端驗證 設置 ServerValidate事件
   protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
    {
        if (args.Value == "1" )
        {
            args.IsValid = true;    //相等則返回 true
        }
        else
        {
            args.IsValid = false;    //不相等則返回 false
        }
    }
技術分享 技術分享
//客戶端驗證 設置 ClientValidationFunction事件
  <script type="text/javascript">
        function test(src, args) {    //必需要設置兩個參數src可隨便設置
            if (args.Value == "1") {
                args.IsValid = true;    //相等則返回 true
            } else {
                args.IsValid = false;    //不相等則返回 false
            }
        }
  </script>
技術分享

客戶端校驗

有些服務器端控件的ID會自動更改,如果用 javascript 去判斷,將會找不到ID,可用 ClientID 解決
如: <%=TextBox1.ClientID %> 會自動找到對應的客戶端ID

案例:根據用戶輸入的月份判斷用戶輸入的天數是否合法(如 2月29天),
如果用戶輸入2月份,天數輸入31,則不合法

用戶拉一個範圍驗證控件,與一個自定義驗證控件,驗證控件驗證月份是否在 1-12 月,
自定義驗證控件如下:

技術分享
//服務端校驗  設置 ServerValidate事件
 protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
  {
        int month = Convert.ToInt32(TextBox1.Text); //獲得用戶輸入月份
        int day = Convert.ToInt32(args.Value);      //獲得用戶輸入天數
        //將每個月的天數存放在 int數組
        int[] data = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 
        int days = data[month-1];                   //得到用戶輸入月的天數
        args.IsValid = (day >= 1 && day <= days);   //判斷用戶輸入的天數是否與程序相等
   }
技術分享 技術分享
//客戶端校驗 設置 ClientValidationFunction事件
<script type="text/javascript">
        function test(src, args) {
        var months = document.getElementById("<%=TextBox1.ClientID %>");
        var month = parseInt(months.value,10);        //獲得用戶輸入月份
        var day = parseInt(args.Value,10);        //獲得用戶輸入天數
        
        var data = [31,29,31,30,31,30,31,31,30,31,30,31]; 
        var days = data[month-1];            //得到用戶輸入月的天數
        args.IsValid = (day >= 1 && day <= days);    //判斷用戶輸入的天數是否與程序相等
        }
</script>
技術分享

匯總錯誤消息

使用Validator錯誤消息會顯示在放置的位置,如果消息過長,希望把錯誤信息集中顯示
ValidationSummary控件用來集中顯示錯誤消息,第個驗證控件都有ErrorMessage,Text兩個屬性
ErrorMessage是用來顯示到ValidationSummary中的值,Text是用來顯示到Validator位置的值
如果Text為空,則ErrorMessage會同時顯示到ValidationSummary和控件的位置
一般Text的值要簡短(如"必填","*"),
ValidationSummary的屬性:
  DiplayMode 顯示模式
  ShowMessageBox 用戶同時顯示警告對話框

ASP.NET中的驗證控件