我有会话问题,我有2个登录页面,一个用于管理员,一个用于教师,当用户输入他的ID和密码时,会话为他的名字创建,我在Masterpage中使用此会话,所以我可以控制一些面板的外观显示url到另一个页面,但遗憾的是它不起作用,我想为Admin和老师创建不同的母版页,但这是一个不好的解决方案,其中一些页面在两者之间共同,无论如何这是代码首先在母版页
protected void Page_Load(object sender, EventArgs e)
{
if (Session["fname"] == "admin")
{
Panel2.Visible = false;
Panel1.Visible = true;
Panel3.Visible = false;
}
else if (Session["fname"] == "Teacher")
{
Panel1.Visible = false;
Panel2.Visible = true;
Panel3.Visible = false;
}
else
{
Panel1.Visible = false;
Panel2.Visible = false;
Panel3.Visible = true;
}
}
并在管理员登录页面
string s = "Select ID,Name,Password FROM Admin where ID = '" + TextBox1.Text + "'";
con.Open();
SqlCommand cmd = new SqlCommand(s, con);
SqlDataReader dr;
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
string s1 = dr[2].ToString();
string s2 = TextBox2.Text;
if (s1 == s2)
{
Session["fname"] = "admin";
Response.Redirect("ManageCourse.aspx", true);
Page.ClientScript.RegisterStartupScript(GetType(), "msgbox", "alert('Login Successful');", true);
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
在教师登录页面
string s = "Select ID,Name,Password FROM Teacher where ID = '"+TextBox1.Text+"'";
con.Open();
SqlCommand cmd = new SqlCommand(s,con);
SqlDataReader dr;
dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
string s1=dr[2].ToString();
string s2=TextBox2.Text;
if (s1 == s2)
{
Session["fname"] = "Teacher";
Response.Redirect("AddQ.aspx", false);
Page.ClientScript.RegisterStartupScript(GetType(), "msgbox", "alert('Login Successful');", true);
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
我在webconfig中添加了这一行
<sessionState mode="InProc"/>
仅显示其可见设置为true的所需结果,但会话不起作用,并且仅转到仅显示panel3的最后一个。
答案 0 :(得分:0)
将会话内容转换为字符串。 使用方法ToString()
if(Session [&#34; fname&#34;]。ToString()==&#34; admin&#34;)
else if(Session [&#34; fname&#34;]。ToString()==&#34; Teacher&#34;)