我正在设计一个网站,有常见的表格,如登录,注销,注册,母版页等。我在用户登录时保持会话。如果用户登录,我想在主页面的菜单栏上显示注销否则应该显示登录和注册新菜单。但是,无论用户是否登录,都不会显示注销菜单。任何帮助都会感激不尽。
登录代码:
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>
答案 0 :(得分:1)
我要做的第一件事就是停止向你的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 )