這個技巧是非常有用。如果我們有多個控件,我們只用一個驗證控件來驗證它 。這將減少頁面大小和 改善性能,因為每個驗證控件在客戶端都會被渲染成span,如果一個頁面包含上百個控件,就會使得頁面 非常的龐大臃腫。
在這篇文章的Demo中,動態創建的幾個textbox,我只使用一個驗證控件去驗證它們。
1.aspx頁面上:
1 <body>
2 <form id="form1" runat="server">
3 <div>
4 <asp:CustomValidator ID="CustomValidator1" runat="server" ></asp:CustomValidator>
5 <asp:ValidationSummary ID="ValidationSummary1" runat="server" />
6 </div>
7
8 </form>
9 </body>
2.在服務端將驗證控件和TextBox的onfocus事件關聯起來:
1 protected void Page_Load(object sender, EventArgs e)
2 {
3 if (!IsPostBack)
4 {
5 for (int i = 0; i < 10; i++)
6 {
7 TextBox tb = new TextBox();
8 tb.ID = "tb" + i.ToString();
9 tb.Attributes.Add ("onfocus", "HookUpControl(this,'" + CustomValidator1.ClientID + "')");
10 Page.Form.Controls.Add(tb);
11 }
12 }
13 }
3.HookUpControl函數如下:
1 function HookUpControl(curObj, validatorClientID)
2 {
3 var validationControl = document.getElementById (validatorClientID);
4 validationControl.controltovalidate = curObj.id;
5 validationControl.clientvalidationfunction = "validatetextbox";
6 validationControl.validateemptytext = "true";
7 ValidatorHookupControl(curObj, validationControl);
8 }