在母版页中不检索会话名称

时间:2014-04-24 05:24:11

标签: c# asp.net session hyperlink master-pages

我在asp.net中使用单一母版页来登录和注销功能...... 但在母版页中,会话名称取值为空。 这是我的代码,请帮帮我... MasterPage.master.cs

    protected void Page_Load(object sender, EventArgs e)
      {
         if (!IsPostBack)
          {
             if (Session["name"] == null)
                {
                  Panel2.Visible = false;
                  Panel1.Visible = true;
                }
             else if (Session["name"] != null)
                    {
                      Panel1.Visible = false;
                      Panel2.Visible = true;
                      Label2.Text = "WELCOME | Mr." + Session["name"].ToString();
                    }
          }
      }
        protected void LoginStatus1_LoggedOut(object sender, EventArgs e)
            {
               Session.Clear();
               Session.Abandon();
            }

我的 homepage.aspx.cs

   protected void Button1_Click(object sender, EventArgs e)
     {
        string st="select Label4,Label3 FROM Register1_master WHERE Label4='" +        TextBox1.Text + "' and Label3='" + TextBox2.Text + "'";
      cmd = new SqlCommand(st, sqlcon);
      cmd.Connection.Open();
      string result= null;
      Object value=cmd.ExecuteScalar ();
      if ( value != null)
       {
          result = value.ToString ();
          Session["name"] = TextBox1.Text;
          Response.Redirect("Main.aspx");
       }
         else
          {
            Label3.Text="Invalid username or password";
          }
            cmd.Connection.Close();
    }

从主页登录后,我将继续 Main.aspx 页面

我的 Main.aspx.cs

    protected void Page_Load(object sender, EventArgs e)
       {
         if (!IsPostBack) 
           {
            HyperLink link = (HyperLink)Master.FindControl("HyperLink1");
            link.Visible = false;
            HyperLink link1 = (HyperLink)Master.FindControl("HyperLink2");
            link1.Visible = true;
            Label masterlbl = (Label)Master.FindControl("Label2");
            string login = Convert.ToString(Session["name"]);
            Session["name"] = login;

           }

       }

1 个答案:

答案 0 :(得分:0)

你试试这样:

  int result= null;
  result= = Convert.ToInt32(cmd.ExecuteScalar());

使用ExecuteScalar方法从数据库中检索单个值(例如,聚合值)。这比使用ExecuteReader方法需要的代码少,然后使用SqlDataReader返回的数据执行生成单个值所需的操作。

典型的ExecuteScalar查询可以采用以下C#示例格式化:

 cmd.CommandText = "SELECT COUNT(*) FROM dbo.region";
 Int32 count = (Int32) cmd.ExecuteScalar();

请参阅MSDN