demoshop

demo, trying to be the best_

demo最近上班的時候經常在製作表單的輸入介面,前人留下來的都是在儲存之前一個一個if的去找例外,寫得很亂也很煩,於是就找了CustomValidato的用法,第一次使用的感想是,早就該用這好玩意啦!!!有需要驗證的朋友也可以試試看。

直接丟頁面來看看

<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <asp:CustomValidator ID="CustomValidator1" runat="server"  
            ControlToValidate="TextBox1" ErrorMessage="CustomValidator"  
            onservervalidate="CustomValidator1_ServerValidate"></asp:CustomValidator>
    </div>
    </form>
</body> 

我頁面中丟了兩個文字方塊與一個CustomValidator驗證控制項,因該沒有一個現成的控制項可以判定textbox1輸入特定字串後再判定textbox2的字串來決定是否通過驗證,所以要靠CustomValidator來達到此效果。


我們在CustomValidator的SercerValidate事件中寫了以下的code

if (args.Value == "abc")
       {
           if (this.TextBox2.Text == "def")
           {
               args.IsValid = true;
           }
           else
           {
               this.CustomValidator1.ErrorMessage = "第二段文字不是def";
               args.IsValid = false;
           }
       }
       else
       {
           this.CustomValidator1.ErrorMessage = "第一段文字不是abc";
           args.IsValid = false;
       }

然後再建立一個按鈕在click事件中如此寫

protected void Button1_Click(object sender, EventArgs e)
   {
       if (IsValid)
           Response.Write("驗證成功");
       else
           Response.Write("驗證失敗");
   } 

 在驗證的if中demo利用了兩種方式抓值使用args.Value可以抓到驗證控制項驗證的值,當然你也可以直接指定TextBox1.Text所以在應用上相當的自然而且方便,如果要單純驗證輸入的資料是否已經存在資料庫,也可以將autopostback打開,或是加上AJAX來達到更高的使用者介面,在此推薦給你啦。

回應討論