ASP.NET 2.0解決Button與驗(yàn)證控件沖突:ValidationGroup
問(wèn)題描述:在一個(gè)頁(yè)面里創(chuàng)建多個(gè)按鈕,其中默認(rèn)情況下Button與驗(yàn)證控件沖突:當(dāng)其中的一個(gè)按鈕被點(diǎn)擊后想要特定的validator被激發(fā)而不是頁(yè)面中的所有validator(如驗(yàn)證用戶名是否可用)。而其他按鈕則不需要validator。此時(shí)會(huì)都會(huì)啟用數(shù)據(jù)驗(yàn)證控件。
說(shuō)明:在asp.net 1.1中除了hack code沒(méi)有更好的辦法解決Button與驗(yàn)證控件沖突的問(wèn)題。asp.net 2.0中給所有的驗(yàn)證控件和按鈕(button、linkbutton等等)增加了ValidatorGroup屬性,就可以輕松地解決這個(gè)問(wèn)題。如果在頁(yè)面中有一個(gè)TextBox并且緊挨著他有一個(gè)RequiredFieldValidator 和Button控件,可以將RequiredFieldValidator和Button的ValidationGroup屬性設(shè)置成一樣的值從而使得點(diǎn) 擊button時(shí)只觸發(fā)這個(gè)RequiredFieldValidator的validor,任何沒(méi)有定義在ValidationGroup內(nèi)的其他的 validator都會(huì)被忽略。
例子:
文本框和數(shù)據(jù)驗(yàn)證控件:
- < asp:TextBox ID="TxtOldPs" runat="server" Width="150px">< /asp:TextBox>
- < asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TxtOldPs"
- Display="None" ErrorMessage="< b>友情提醒< /b>< br />請(qǐng)輸入原始密碼??!" ValidationGroup="ValidataGroup1">< /asp:RequiredFieldValidator>
按鈕事件:
- < asp:Button ID="ButtonOK" runat="server" Text="修改" OnClick="Edit_Click" ValidationGroup="ValidataGroup1" />
另一個(gè)按鈕 則不需要設(shè)置ValidationGroup
- < asp:Button ID="ButtonOK" runat="server" Text="退出" OnClick="Exit_Click" />
這樣就通過(guò)ValidationGroup解決了Button與驗(yàn)證控件沖突的問(wèn)題。
【編輯推薦】