[英]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.