会话不适用于控制面板

时间:2018-03-28 15:40:25

标签: c# asp.net session

我有会话问题,我有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的最后一个。

1 个答案:

答案 0 :(得分:0)

将会话内容转换为字符串。 使用方法ToString()

if(Session [&#34; fname&#34;]。ToString()==&#34; admin&#34;)

else if(Session [&#34; fname&#34;]。ToString()==&#34; Teacher&#34;)