CustomValidator是使用者自訂的驗證控制項,用來響應使用者自訂的驗證。可以使JS的用戶端函數,也可以是寫在後台代碼中的服務端驗證函式。
以下是CustomValidator的常用屬性
屬性 |
描述 |
BackColor |
背景顏色。 |
ClientValidationFunction |
規定用於驗證的自訂用戶端指令碼函數的名稱。 注釋:指令碼必須用瀏覽器支援的語言編寫,比如 VBScript 或 JScript 使用 VBScript 的話,函數必須位於表單中: Sub FunctionName (source, arguments) 使用 JScript 的話,函數必須位於表單中: Function FunctionName (source, arguments) |
ControlToValidate |
要驗證的輸入控制項的 id。 |
Display |
驗證控制項中錯誤資訊的顯示行為。 合法的值有: · None - 驗證訊息從不內聯顯示。 · Static - 在頁面配置中分配用於顯示驗證訊息的空間。 · Dynamic - 如果驗證失敗,將用於顯示驗證訊息的空間動態添加到頁面。 |
EnableClientScript |
布爾值,該值指示是否啟用用戶端驗證。 |
Enabled |
布爾值,該值指示是否啟用驗證控制項。 |
ErrorMessage |
驗證失敗時 ValidationSummary 控制項中顯示的錯誤資訊的文本。 注釋:如果設定了 ErrorMessage 屬性但沒有設定 Text 屬性,則驗證控制項中也將顯示 ErrorMessage 屬性的值。 |
ForeColor |
控制項的前景色彩。 |
id |
控制項的唯一 id。 |
IsValid |
布爾值,該值指示關聯的輸入控制項是否通過驗證。 |
OnServerValidate |
規定被執行的伺服器端驗證指令碼函數的名稱。 |
runat |
規定該控制項是伺服器控制項。必須設定為 "server"。 |
Text |
當驗證失敗時顯示的文本。 |
學以致用,看看CustomValidator在實際當中的應用
<%@ Page Language="C#" AutoEventWireup="true" Inherits="Default2" Codebehind="Default2.aspx.cs" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title>使用者自訂控制項</title> <script type="text/javascript" language="javascript"> function Clientv(s,e) { e.IsValid=(e.Value=="用戶端"); } </script></head><body> <form id="form1" runat="server"> <div> 用戶端驗證 <asp:TextBox ID="txtClient" runat="server"></asp:TextBox> <asp:CustomValidator ID="CustomValidator2" runat="server" ControlToValidate="txtClient" ErrorMessage="用戶端驗證失敗" ClientValidationFunction="Clientv" ForeColor="Red"></asp:CustomValidator> <br /> 伺服器驗證 <asp:TextBox ID="txtServer" runat="server"></asp:TextBox> <asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="txtServer" ErrorMessage="服務端驗證失敗" OnServerValidate="Server_ServerValidate" ForeColor="Red"></asp:CustomValidator> </div> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="提交" /> </form></body></html>
寫在cs檔案中的服務端驗證函式
//服務端的驗證方法 protected void Server_ServerValidate(object source, ServerValidateEventArgs args) { args.IsValid=(args.Value=="服務端"); }
用戶端提示驗證失敗,而且此時不再提交資訊,所以服務端驗證不會被執行。
用戶端驗證通過,服務端驗證失敗。
有一點需要注意一下,就是CustomValidator不會對空值或者全部為空白格的內容進行驗證,這一點可以通過跟之前講的其他控制項配合使用。