我有一个包含两个文本框的表。每个文本框都有一个必需的验证器,以使用户在文本框中插入数据。
我还有一个登录表来确认用户权限。
当我提交登录按钮时,第一个表中的验证器出现并阻止用户登录。我将登录按钮属性(导致验证)更改为false,但是我在登录表中添加的验证器没有不会出现。
那么请问我该如何解决这个问题。
答案 0 :(得分: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时,您将禁用该按钮的所有验证操作,而不仅仅是您不想要的操作。
答案 1 :(得分:1)
我认为您可以使用 ValidationGroups 来解决您的问题。以下摘录自a page with a longer explanation:
此页面有两个组 - 验证器的“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>