如何在asp中使用会话变量使用c#

时间:2011-03-12 13:09:42

标签: asp.net

我们如何使用c#在asp.net中的登录页面中创建会话 给我充分的例子......

3 个答案:

答案 0 :(得分:18)

假设您的代码在页面中(内联或后面的代码中),您可以使用...

DataType someValue = (DataType)Session["SessionVariableNameHere"]; //Getter
Session["SessionVariableNameHere"] = someNewValue; //Setter

显然,您需要正确命名会话变量,并在将其从会话中退回时转换为适当的数据类型。

编辑 - 完整示例

protected void Login1_LoggedIn(object sender, EventArgs e)
{
    Session["LoginTime"] = DateTime.Now;
}

以及后来的页面加载......

protected void Page_Load(object sender, EventArgs e)
{
    Literal1.Text = "Last Online: " + ((DateTime)Session["LoginTime"]).ToString("yyyy-MM-dd");
}

答案 1 :(得分:4)

当用户输入正确的用户名&密码。创建一个会持有标志的会话

if(userLoggedInSuccessfully)
{
          Session["SessionVariableName"] = "Flag";
}

如果您在页面中使用母版页,请查看page_load

page_load()
{
                 if(Session["SessionVariableName"] != null)
                 {
                       if(Session["SessionVariableName"]=="Flag")
                       {
                              //Valid User
                       }
                       else
                       {
                                  //Invalid user
                       }
                 }
                 else
                 {
                           //Session expired
                 }

}

答案 2 :(得分:4)

我通常定义一个(基本)页面级属性,并尝试避免每次必须引用时对会话变量名进行硬编码。这是一个例子:

在Constants.cs中:

public static class Constants
{
  public static class SessionKeys
  {
    public static string MY_SESSION_VARIABLE = "MySessionVariable";  //Or better yet - a newly generated GUID.
  }
}

在页面的代码隐藏中,定义您的属性:

protected MyType MyVariable
{
  get
  {
    MyType result = null;

    object myVar = Session[Constants.SessionKeys.MY_SESSION_VARIABLE];
    if (myVar != null && myVar is MyType)
    {
      result = myVar as MyType;
    }

    return result;
  }
  set 
  {
    Session[Constants.SessionKeys.MY_SESSION_VARIABLE] = value;
  }
}

在页面的代码隐藏中,引用属性:

//set
MyVariable = new MyType();

//get
string x = MyVariable.SomeProperty;