用户登录时在母版页中隐藏登录面板。(ASP.net)

Posted

技术标签:

【中文标题】用户登录时在母版页中隐藏登录面板。(ASP.net)【英文标题】:Hiding login panel in master page when users logged in. (ASP.net) 【发布时间】:2012-01-25 04:31:21 【问题描述】:

我的母版页中有一个面板,其中包含用于用户登录的文本框。用户成功登录,但我想隐藏面板。当用户输入时,当我尝试通过 false 隐藏面板时,可见性这不起作用。我在以下母版页中的代码:(我使用表单身份验证,用户在数据库中)

protected void Button1_Click(object sender, EventArgs e)

    //hide panel doesn't work
    Panel1.Visible = false;
    //
    SqlCommand cmd = new SqlCommand();
    string str = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\ava\\Desktop\\WebSite3\\App_Data\\news.mdf;Integrated Security=True;User Instance=True";
    SqlConnection conn = new SqlConnection(str);
    conn.Open();
    cmd.CommandText = "select * from users where username=@name and pass=@pass";
    cmd.Connection = conn;
    cmd.Parameters.AddWithValue("name", user.Text);
    cmd.Parameters.AddWithValue("pass", pass.Text);

    SqlDataReader dr = cmd.ExecuteReader();

    if (dr.HasRows)
    
        Panel1.Visible = false;
        Panel2.Visible = true;

        FormsAuthentication.SetAuthCookie(user.Text, true);
        FormsAuthentication.RedirectFromLoginPage(user.Text, true);
        Response.Redirect("/website3/karbar/karbar.aspx");


    
    else user.Text = "Incorrect name or pass";

【问题讨论】:

老兄!你是认真的以纯文本形式保存密码吗!!! 这里有太多的反模式......加上严重的安全漏洞。我认为这个小组不是你的主要问题......这是某种挑衅吗?我只希望这是纯粹的测试环境。 这是测试,我加密了这个密码 【参考方案1】:

加载完成后在您的母版页中执行以下操作

if(Request.IsAuthenticated)

        Panel1.Visible = false;
        Panel2.Visible = true;

或者使用 LoginView 这个控件支持 Anonymous 和 LoggedIn 用户的模板

【讨论】:

请注意,这仅在登录后第一次重定向后才有效。【参考方案2】:

试试这个:

Panel1.Dispose();

【讨论】:

我想隐藏这个面板并为登录用户显示另一个面板。但是这个面板没有隐藏,那个面板没有显示。这些面板的可见性不起作用【参考方案3】:

你可以这样试试,可能对你有帮助

Panel1.Style.Add(htmlTextWriterStyle.Display, "none");

【讨论】:

【参考方案4】:

我希望你在一个基本上继承了母版页的 aspx.cs 页面中编写代码。

所以你需要这样做:

protected void Button1_Click(object sender, EventArgs e) 
 
   ((Panel)YourMasterPageID.FindControl("YourPanelID")).Visible = false;

【讨论】:

或者,如果您需要在母版页中编写代码,则可以编写为:codeYourPanelId.Attributes.Add("style", "display:none"); codecode YourPanelId.Style.Add("display", "none"); code

以上是关于用户登录时在母版页中隐藏登录面板。(ASP.net)的主要内容,如果未能解决你的问题,请参考以下文章

mvc 母版页中登录注册和问候的处理

如何在母版页的内容页中使用 jQuery 函数?

引导下拉菜单在母版页中不起作用

母版页中的 ASP.NET CSS 文件

asp.net 中的 Paypal 表单标签问题

关于asp.net中页面事件加载的先后顺序