做專案時遇到了一個問題,在一個頁面裡放置多個Button按鈕,其中預設情況下按鈕事件與資料驗證控制項衝突:當其中的一個按鈕被點擊後想要特定的validator被激發而不是頁面中的所有validator。而其他按鈕則不需要validator。此時會都會啟用資料驗證控制項。
說明:在ASP.NET 1.1中除了hack code沒有更好的辦法。ASP.NET 2.0中給所有的validator控制項和按鈕(button、linkbutton等等)增加了ValidatorGroup屬性,就可以輕鬆地解決這個問題。如果在頁面中有一個TextBox並且緊挨著他有一個RequiredFieldValidator 和Button控制項,可以將RequiredFieldValidator和Button的ValidationGroup屬性設置成一樣的值從而使得點擊button時只觸發這個RequiredFieldValidator的validor,任何沒有定義在ValidationGroup內的其他的 validator都會被忽略。
例子:
文字方塊和資料驗證控制項:
<asp:TextBox ID=”TxtOldPs” runat=”server” Width=”150px”></asp:TextBox>
<asp:RequiredFieldValidator ID=”RequiredFieldValidator1″ runat=”server” ControlToValidate=”TxtOldPs”
Display=”None” ErrorMessage=”<b>友情提醒</b><br />請輸入原始密碼!!”ValidationGroup=”ValidataGroup1″></asp:RequiredFieldValidator>
按鈕事件:
<asp:Button ID=”ButtonOK” runat=”server” Text=”修改” OnClick=”Edit_Click”ValidationGroup=”ValidataGroup1″ />
另一個按鈕則不需要設置ValidationGroup
<asp:Button ID=”ButtonOK” runat=”server” Text=”退出” OnClick=”Exit_Click” />