按钮和验证器

时间:2010-10-18 15:08:03

标签: c# asp.net castle-validators

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

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

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

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

2 个答案:

答案 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>