繁体   English   中英

注销链接按钮未触发点击事件

[英]Logout linkbutton is not firing click event

我正在尝试通过我的网页实现登录和注销。 有两个面板可以切换。 在我的页面加载中,注销面板不可见,因此用户只能看到登录链接。 登录后,登录面板变为不可见,退出面板在退出链接所在的位置可见。 但是注销链接按钮甚至没有触发click事件。 这是我尝试单击注销链接按钮时在底部浏览器窗口中看到的内容 这是我尝试单击注销链接按钮时在底部浏览器窗口中看到的内容 这是我的aspx页面-

<div>
<asp:Panel ID="LoginPanel" runat="server">
    <ul class="style1">
                <li>Username</li>
                <li><asp:TextBox ID="LoginEmail" runat="server" Width="90%" placeholder="Email" class="form-control"></asp:TextBox></li>

                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Email Required" ControlToValidate="LoginEmail" ForeColor="#CC0000" Font-Italic="True"></asp:RequiredFieldValidator>

                <li>Password</li>
                <li><asp:TextBox ID="LoginPassword" runat="server" Width="90%" placeholder="Password" class="form-control" TextMode="Password"></asp:TextBox></li>

                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Password Required" ControlToValidate="LoginPassword" ForeColor="#CC0000" Font-Italic="True"></asp:RequiredFieldValidator>

                <li><asp:Button ID="LoginButton" runat="server" Text="Login" class="btn btn-default" onclick="LoginButton_Click"/>

                &nbsp;New User?<asp:HyperLink ID="new_user" runat="server" NavigateUrl="Registration.aspx">Register Here</asp:HyperLink></li>
    </ul>
</asp:Panel>
<asp:Panel ID="LogoutPanel" runat="server">
                <asp:LinkButton ID="LogoutLink" runat="server" Text="Logout" 
                    onclick="LogoutLink_Click" />
</asp:Panel>
</div>

这是我的CS代码-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;

public partial class UserMasterPage : System.Web.UI.MasterPage
{
    ConnectionClass cl;
    SqlDataReader dr;
    string sql;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            LogoutPanel.Visible = false;
            cl = new ConnectionClass();
        }
    }
    protected void LoginButton_Click(object sender, EventArgs e)
    {
        sql = "select Id, Email_, Password_, Block from MemberLogin where Email_='" + LoginEmail.Text + "'";
        cl = new ConnectionClass();
        cl.establishConnection();
        cl.createReaderCommand(sql);
        dr = cl.executeReaderCommand();
        if (dr.HasRows)
        {
            if (LoginPassword.Text == dr["Password_"].ToString())
            {
                if (dr["Block"].ToString() == "False")
                {
                    Session["user"] = dr[0].ToString();
                    LoginPanel.Visible = false;
                    LogoutPanel.Visible = true;
                    //Response.Write("login successful");
                }
            }
        }
        cl.closeConnection();
    }
    protected void LogoutLink_Click(object sender, EventArgs e)
    {
        Session.Abandon();
        Response.Redirect("AdminLogin.aspx");
    }
}

这是在我的主页上。 我需要尽快解决这个问题。 请为此提供帮助。谢谢。

与LinkBut​​ton关联的__DoPostBackWithOptions调用与页面中验证器的存在有关。 CausesValidation设置为false会将其替换为“常规” __doPostBack

<asp:LinkButton ID="LogoutLink" runat="server" CausesValidation="false" ... />

标记中显示的验证器位于Visible = false的面板中,它们不应处于活动状态。 但是,由于我看不到其他任何可以阻止回发的内容,因此关闭LinkBut​​ton的验证至少可以消除这种可能的原因。

顺便说一句,如果表单中有许多控件和验证器,则可以考虑将它们与验证组分组。 这将允许每个按钮(或引起回发的其他控件)仅触发相关的验证器:

<asp:TextBox ID="txt1a" runat="server" ValidationGroup="Group1" />
<asp:RequiredFieldValidator ID="rfv1a" runat="server" ControlToValidate="txt1a" ValidationGroup="Group1" Text="*" ForeColor="Red" />
<asp:TextBox ID="txt1b" runat="server" ValidationGroup="Group1" />
<asp:RequiredFieldValidator ID="rfv1b" runat="server" ControlToValidate="txt1b" ValidationGroup="Group1" Text="*" ForeColor="Red" />
<asp:Button ID="btn1" runat="server" Text="Button1" ValidationGroup="Group1" />
<br />
<asp:TextBox ID="txt2a" runat="server" ValidationGroup="Group2" />
<asp:RequiredFieldValidator ID="rfv2a" runat="server" ControlToValidate="txt2a" ValidationGroup="Group2" Text="*" ForeColor="Red" />
<asp:TextBox ID="txt2b" runat="server" ValidationGroup="Group2" />
<asp:RequiredFieldValidator ID="rfv2b" runat="server" ControlToValidate="txt2b" ValidationGroup="Group2" Text="*" ForeColor="Red" />
<asp:Button ID="btn2" runat="server" Text="Button2" ValidationGroup="Group2" />

在上面的示例中,即使txt2a为空,单击btn1也会导致回发,因为它们不属于Group1验证组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM