如果現(xiàn)有的 ASP.NET 驗(yàn)證控件無(wú)法滿足需求,您可以定義一個(gè)自定義的服務(wù)器端驗(yàn)證函數(shù),然后使用 CustomValidator 控件來(lái)調(diào)用它。您還可以通過(guò)編寫(xiě) ECMAScript (JavaScript) 函數(shù),重復(fù)服務(wù)器端方法的邏輯,從而添加客戶端驗(yàn)證,在提交頁(yè)面之前檢查用戶輸入內(nèi)容。
即使使用了客戶端檢查,您也應(yīng)該執(zhí)行服務(wù)器端的驗(yàn)證。服務(wù)器端的驗(yàn)證有助于防止用戶通過(guò)禁用或更改客戶端腳本來(lái)避開(kāi)驗(yàn)證。
![]() |
---|
默認(rèn)情況下,ASP.NET 網(wǎng)頁(yè)自動(dòng)驗(yàn)證是否有惡意用戶試圖向您的應(yīng)用程序發(fā)送腳本或 HTML 元素。有關(guān)更多信息,請(qǐng)參見(jiàn)腳本侵入概述。 |
將一個(gè) CustomValidator 控件添加到頁(yè)面中并設(shè)置下列屬性:
屬性 | 說(shuō)明 |
---|---|
正在驗(yàn)證的控件的 ID。 | |
這些屬性指定驗(yàn)證失敗時(shí)要顯示的錯(cuò)誤的文本和位置。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn) 如何:控制 ASP.NET 服務(wù)器控件的驗(yàn)證錯(cuò)誤信息顯示。 |
為控件的 ServerValidate 事件創(chuàng)建一個(gè)基于服務(wù)器的事件處理程序。這一事件將被調(diào)用來(lái)執(zhí)行驗(yàn)證。方法具有如下簽名:
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 參數(shù)是對(duì)引發(fā)此事件的自定義驗(yàn)證控件的引用。屬性 args.Value 將包含要驗(yàn)證的用戶輸入內(nèi)容。如果值是有效的,則將 args.IsValid 設(shè)置為 true;否則設(shè)置為 false。
下面的代碼示例顯示了如何創(chuàng)建自定義驗(yàn)證。事件處理程序確定用戶輸入是否為 8 個(gè)字符或更長(zhǎng)。
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 網(wǎng)頁(yè)代碼中添加測(cè)試代碼,以檢查有效性。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn) 如何:以編程方式測(cè)試 ASP.NET 服務(wù)器控件的有效性。
使用 ECMAScript (JavaScript、JScript) 創(chuàng)建驗(yàn)證函數(shù)。
下面的代碼示例解釋了自定義客戶端驗(yàn)證。源自頁(yè)的摘要將顯示由 CustomValidator 控件引用的 TextBox 控件。驗(yàn)證控件調(diào)用名為 validateLength 的客戶端腳本函數(shù),以確認(rèn)用戶在 TextBox 控件中輸入了至少 8 個(gè)字符。
<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 網(wǎng)頁(yè)代碼中添加測(cè)試代碼,以檢查有效性。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn) 如何:以編程方式測(cè)試 ASP.NET 服務(wù)器控件的有效性。
聯(lián)系客服