如果現(xiàn)有的 ASP.NET 驗證控件無法滿足需求,您可以定義一個自定義的服務器端驗證函數,然后使用 CustomValidator 控件來調用它。您還可以通過編寫 ECMAScript (JavaScript) 函數,重復服務器端方法的邏輯,從而添加客戶端驗證,在提交頁面之前檢查用戶輸入內容。
即使使用了客戶端檢查,您也應該執(zhí)行服務器端的驗證。服務器端的驗證有助于防止用戶通過禁用或更改客戶端腳本來避開驗證。
安全說明: |
---|
默認情況下,ASP.NET 網頁自動驗證是否有惡意用戶試圖向您的應用程序發(fā)送腳本或 HTML 元素。有關更多信息,請參見腳本侵入概述。 |
將一個 CustomValidator 控件添加到頁面中并設置下列屬性:
屬性 | 說明 |
---|---|
正在驗證的控件的 ID。 | |
這些屬性指定驗證失敗時要顯示的錯誤的文本和位置。有關詳細信息,請參見 如何:控制 ASP.NET 服務器控件的驗證錯誤信息顯示。 |
為控件的 ServerValidate 事件創(chuàng)建一個基于服務器的事件處理程序。這一事件將被調用來執(zhí)行驗證。方法具有如下簽名:
Protected Sub CustomValidator1_ServerValidate(ByVal _ source As System.Object, ByVal args As _ System.Web.UI.WebControls.ServerValidateEventArgs) _ Handles CustomValidator1.ServerValidate End Sub
protected void ValidationFunctionName(object source, ServerValidateEventArgs args) { }
source 參數是對引發(fā)此事件的自定義驗證控件的引用。屬性 args.Value 將包含要驗證的用戶輸入內容。如果值是有效的,則將 args.IsValid 設置為 true;否則設置為 false。
下面的代碼示例顯示了如何創(chuàng)建自定義驗證。事件處理程序確定用戶輸入是否為 8 個字符或更長。
Protected Sub TextValidate(ByVal source As System.Object, _ ByVal args As System.Web.UI.WebControls.ServerValidateEventArgs) _ Handles CustomValidator1.ServerValidate args.IsValid = (args.Value.Length >= 8) End Sub
protected void TextValidate(object source, ServerValidateEventArgs args) { args.IsValid = (args.Value.Length >= 8); }
使用如下代碼將事件處理程序綁定到方法:
<asp:textbox id="TextBox1" runat="server"></asp:textbox> <asp:CustomValidator id="CustomValidator1" runat="server" OnServerValidate="TextValidate" ControlToValidate="TextBox1" ErrorMessage="Text must be 8 or more characters."> </asp:CustomValidator>
<asp:textbox id="TextBox1" runat="server"></asp:textbox> <asp:CustomValidator id="CustomValidator1" runat="server" OnServerValidate="TextValidate" ControlToValidate="TextBox1" ErrorMessage="Text must be 8 or more characters."> </asp:CustomValidator>
在 ASP.NET 網頁代碼中添加測試代碼,以檢查有效性。有關詳細信息,請參見 如何:以編程方式測試 ASP.NET 服務器控件的有效性。
使用 ECMAScript (JavaScript、JScript) 創(chuàng)建驗證函數。
下面的代碼示例解釋了自定義客戶端驗證。源自頁的摘要將顯示由 CustomValidator 控件引用的 TextBox 控件。驗證控件調用名為 validateLength 的客戶端腳本函數,以確認用戶在 TextBox 控件中輸入了至少 8 個字符。
<script type="text/javascript"> function validateLength(oSrc, args){ args.IsValid = (args.Value.length >= 8); } </script>
<script type="text/javascript"> function validateLength(oSrc, args){ args.IsValid = (args.Value.length >= 8); } </script>
<asp:Textbox id="text1" runat="server" text=""></asp:Textbox> <asp:CustomValidator id="CustomValidator2" runat="server" ControlToValidate = "text1" ErrorMessage = "You must enter at least 8 characters!" ClientValidationFunction="validateLength" > </asp:CustomValidator>
<asp:Textbox id="text1" runat="server" text=""></asp:Textbox> <asp:CustomValidator id="CustomValidator2" runat="server" ControlToValidate = "text1" ErrorMessage = "You must enter at least 8 characters!" ClientValidationFunction="validateLength" > </asp:CustomValidator>
在 ASP.NET 網頁代碼中添加測試代碼,以檢查有效性。有關詳細信息,請參見 如何:以編程方式測試 ASP.NET 服務器控件的有效性。
聯(lián)系客服