簡體   English   中英

在asp.net的主頁中顯示會話狀態

[英]Displaying session state in masterpage for asp.net

我正在設計一個具有常用形式的網站,例如登錄,注銷,注冊,母版頁等。我在用戶登錄時維護會話。如果用戶登錄,我想在母版頁的菜單欄上顯示注銷,否則登錄並應該顯示注冊新菜單。但是無論用戶是否登錄,都不會顯示注銷菜單。任何幫助將不勝感激。

登錄代碼:

 protected void Button1_Click(object sender, EventArgs e)
    {
        String pass=TextBox2.Text;
                SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename='C:\\Users\\aayush\\Documents\\Visual Studio 2010\\WebSites\\JustDial\\App_Data\\Database.mdf';Integrated Security=True;User Instance=True");
        con.Open();
        SqlCommand cmd = new SqlCommand("select * From shop where shop_email = @param1", con);       
        cmd.Parameters.AddWithValue("@param1", TextBox1.Text);
        SqlDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {

            String pass2 = dr["shop_password"].ToString();
            if (pass.Equals(pass2))
            {
                Session["email"] = dr["shop_email"].ToString();
                Response.Redirect("home.aspx");            
            }
            else {
                TextBox1.Text = "";
                TextBox2.Text = "";
                Label1.Text = "Invalid email id or password";         
             }

        }

        dr.Close();
        con.Close();
    }
}

和母版頁中的菜單條形碼:

<ul>
   <li><a href='home.aspx'><span>Home</span></a></li>
   <li><a href='about.aspx'><span>About</span></a></li>
   <li><a href='feedback.aspx'><span>Feedback</span></a></li>
   <li><a href='contact.aspx'><span>Contact</span></a></li>
   <%
       if (Session["email"] is bool && (bool)Session["email"])

       {%>

        <li><a href='logout.aspx'><span>Logout</span></a></li>

       <% }

       else {%>

        <li><a href='login.aspx'><span>Login</span></a></li>
     <li class='last'><a href='addShop.aspx'><span>Register</span></a></li>
       <%
       }

        %>

</ul>

我要做的第一件事是停止將<% %>添加到您的asp.net頁面。 這是我們在經典ASP中曾經做過的事情。 您不需要在ASP.NET中經常執行此操作。

<li>標簽包裝在面板中。

<asp:Panel id="pnlLogOut" runat="server">
   <li><a href='logout.aspx'><span>Logout</span></a></li>
</asp:Panel>

然后,可以在后面的代碼中顯示它。

if (Session["email"] is bool && (bool)Session["email"])
    pnlLogOut.Visible = true; 

這樣,您可以輕松地在后面的代碼中調試會話中的內容。

更改您的if語句,Session [“ email”]不是布爾值。

從:

if (Session["email"] is bool && (bool)Session["email"])

至:

if (Session["email"] != null )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM