尝试按下注销按钮而不是提交时进行验证

时间:2013-12-18 20:56:56

标签: c# asp.net

在我的管理页面上,我有一个"Log out"按钮。在一个页面上有这个表格,你可以填写并提交,它有一些validator controls。问题是,当我在这个页面上时,我无法注销,因为它希望填写文本框,即使它 - 显然 - 不是通过注销按钮提交的。每次尝试离开此页面时验证程序是否都在执行,即使我没有尝试提交表单?要清楚:它适用于其他所有页面,只是这里的验证可以阻止它。

表格代码:

<p>
        <asp:Label ID="lblA" runat="server" Text="LabelA"></asp:Label><br />
        <asp:TextBox ID="txtA" runat="server"></asp:TextBox>
        *

                <asp:RequiredFieldValidator
                    ID="rfvA"
                    runat="server"
                    ControlToValidate="txtA"
                    ErrorMessage="Required"
                    Display="Dynamic">
                </asp:RequiredFieldValidator>
    </p>
    <p>
        <asp:Label ID="lblB" runat="server" Text="LabelB"></asp:Label><br />
        <asp:TextBox ID="txtB" runat="server"></asp:TextBox>
        *

                <asp:RequiredFieldValidator
                    ID="rfvB"
                    runat="server"
                    ControlToValidate="txtB"
                    ErrorMessage="Required"
                    Display="Dynamic">
                </asp:RequiredFieldValidator>
    </p>

退出按钮:

<asp:Button runat="server" Text="Log out" ID="btnLogout" OnClick="btnLogout_Click"/>

点击退出时:

protected void btnLogout_Click(object sender, EventArgs e)
    {
        FormsAuthentication.SignOut();
        FormsAuthentication.RedirectToLoginPage();
    }

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

将原因验证false添加到按钮

<asp:Button runat="server" CausesValidation="False" Text="Log out" ID="btnLogout" OnClick="btnLogout_Click"/>

答案 1 :(得分:0)

您还可以使用控件的ValidationGroup属性。 将相同的ValidationGroup分配给您需要进行验证的控件组(和RequiredFieldValidator),例如用户名和密码文本框以及登录按钮(在您的情况下为两个文本框)并分配不同的ValidationGroup {1}}到其他控件(在你的情况下注销按钮)。

因此,只有在单击相同的验证组按钮时才会触发验证。