1

我有一个带有两个文本框的表格。每个文本框都有一个必需的验证器,以使用户在文本框中插入数据。

我还有一个登录表来确认用户权限。

当我提交登录按钮时,第一个表中的验证器出现并阻止用户登录。我将登录按钮属性(原因验证)更改为 false,但我在登录表中添加的验证器没有出现.

那么请问我该如何解决这个问题。

4

2 回答 2

1

您需要使用的是按钮和验证上的 ValidationGroup 属性。这允许某些操作仅在单击按钮时在页面上强制执行验证器子集。

<asp:TextBox ID="txtA" runat="server" />
<asp:RequiredFieldValidator ID="rfvA" runat="server" ErrorMessage="Message." ControlToValidate="txtA" ValidationGroup="A" />
<asp:Button ID="btnA" runat="server" Text="A" ValidationGroup="A" />

<asp:TextBox ID="txtB" runat="server" />
<asp:RequiredFieldValidator ID="rfvB" runat="server" ErrorMessage="Message." ControlToValidate="txtA" ValidationGroup="B" />
<asp:Button ID="btnB" runat="server" Text="B" ValidationGroup="B" />

现在当btnA被点击时,它只会检查rfvA是否有效(检查txtA),当btnB被点击时,它只会检查rfvB是否有效。是的,您可以在同一个验证组中拥有多个验证控件。

当您将 CausesValidation 属性设置为 false 时,您将禁用按钮的所有验证操作,而不仅仅是您不想要的那些。

于 2010-10-18T15:15:15.793 回答
1

我认为您可以使用ValidationGroups解决您的问题。这是一个页面的摘录,为您提供了更长的解释

该页面有两组验证者——“Group1”和“Group2”。然后页面上有两个按钮——当 button1 被点击时,第一组验证器将被触发。当 button2 被点击时,第二组验证器将被触发。如果验证失败,默认情况下将在客户端阻止回发:

<html>
<body>
     <form runat=“server”&gt;
          <asp:textbox id=“TextBox1” runat=“server”/>
          <asp:requiredfieldvalidator ValidationGroup=“Group1”
                                                       ErrorText=“Need to Fill in Value!”
                                                       ControlToValidate=“TextBox1”
                                                       runat=“server”/>
            <asp:textbox id=“TextBox2” runat=“server”/>
            <asp:requiredfieldvalidator ValidationGroup=“Group2”
                                                         ErrorText=“Need to Fill in Value!”
                                                         ControlToValidate=“TextBox2”
                                                         runat=“server”/>
            <asp:button text=“Group1” ValidationGroup=“Group1” runat=“server”/>
            <asp:button text=“Group2” ValidationGroup=“Group2” runat=“server”/>
     </form>
</body>
</html>
于 2010-10-18T15:15:49.817 回答