我有一个带有两个文本框的表格。每个文本框都有一个必需的验证器,以使用户在文本框中插入数据。
我还有一个登录表来确认用户权限。
当我提交登录按钮时,第一个表中的验证器出现并阻止用户登录。我将登录按钮属性(原因验证)更改为 false,但我在登录表中添加的验证器没有出现.
那么请问我该如何解决这个问题。
我有一个带有两个文本框的表格。每个文本框都有一个必需的验证器,以使用户在文本框中插入数据。
我还有一个登录表来确认用户权限。
当我提交登录按钮时,第一个表中的验证器出现并阻止用户登录。我将登录按钮属性(原因验证)更改为 false,但我在登录表中添加的验证器没有出现.
那么请问我该如何解决这个问题。
您需要使用的是按钮和验证上的 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 时,您将禁用按钮的所有验证操作,而不仅仅是您不想要的那些。
我认为您可以使用ValidationGroups解决您的问题。这是一个页面的摘录,为您提供了更长的解释:
该页面有两组验证者——“Group1”和“Group2”。然后页面上有两个按钮——当 button1 被点击时,第一组验证器将被触发。当 button2 被点击时,第二组验证器将被触发。如果验证失败,默认情况下将在客户端阻止回发:
<html>
<body>
<form runat=“server”>
<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>