資料驗證是為了防止使用者錄入錯誤資料或者漏掉必須填寫的資料而使得伺服器出現不必要的錯誤,ASP.NET有驗證控制項方便我們進行資料驗證,但是有時會出現這樣或者那樣的問題,我今天就遇到了一個,把驗證控制項說一下吧<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="TextBox1" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
<asp:Button ID="Button1" runat="server" Text="Button1" />
上面的代碼實現了最基本的驗證,使用者如果不輸入資訊而直接點擊Button1那麼ErrorMessage就會顯示出來
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="TextBox1" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
<asp:Button ID="Button1" runat="server" Text="Button1" />
<asp:Button ID="Button2" runat="server" Text="Button2" />
在上面的代碼中使用者如果不輸入資訊而點擊Button1或者Button2那麼ErrorMessage都會顯示出來.如果我不想讓Button2引發驗證怎麼辦呢? 好辦,給Button2添加一個屬性 CausesValidation="false" 如下
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="TextBox1" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
<asp:Button ID="Button1" runat="server" Text="Button1" />
<asp:Button ID="Button2" runat="server" Text="Button2" CausesValidation="false" />
這樣使用者如果在不輸入資訊的情況下直接點擊Button2 ErrorMessage就不會出現
但是有時候需要我們在同一頁面驗證不同的資訊,你肯定不能將按鈕的 CausesValidation="false" 加上,我們需要加的是ValidationGroup屬性
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="TextBox1" ValidationGroup="basicInfo" runat="server" ErrorMessage="error form textbox1"></asp:RequiredFieldValidator>
<asp:Button ID="Button1" ValidationGroup="basicInfo" runat="server" Text="Button1" />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" ControlToValidate="TextBox2" ValidationGroup="moreInof" runat="server" ErrorMessage="error form textbox2" ></asp:RequiredFieldValidator>
<asp:Button ID="Button2" ValidationGroup="moreInof" runat="server" Text="Button2" />
這樣就實現了你點擊Button只引發對特定button的驗證而不會影響其他的button
總結:使用驗證組可以將頁面上的驗證控制項歸為一組。可以對每個驗證組執行驗證,該驗證與同一頁的其他驗證組無關。
將要分組的所有控制項的 ValidationGroup 屬性設定為同一個名稱(字串)即可建立驗證組。可以為驗證組分配任何名稱,但必須對該組的所有成員使用相同的名稱。