### 使用 Session 对象存储和读取数据

使用 Session 对象定义的变量为会话变量。会话变量只能用于会话中特定用户。应用程序的其他用户不能访问或修改这个变量。而应用程序变量则可由应用程序的其他用户访问或修改。Session 对象定义变量的方法与 Application 对象相同，都是通过“键/值”对的方式来保存数据，语法：

Sessiont[varName ]=值;

其中, varName 为变量名，例如：

//将 TextBox 控件的文本存储到 Session["Name"]中

Session["Name"]=TextBox1.Text;

//将 Session["Name"]的值读取到 TextBox 控件中

TextBox1.Text=Session["Name"].ToString();

用户登录后通常会记录该用户的相关信息，而该信息是其他用户不可见，并且不可访问的，这就需要使用 Session 对象进行存储。下面通过示例介绍如何使用 Session 对象保存当前登录用户的信息。执行程序，示例运行结果如图 1 和图 2 所示。

图 1 Session 示例

图 2 Session 示例

程序实现的主要步骤：

（1）新建一个网站，默认主页 Default.aspx，将其命名为 Login.aspx。在 Login.aspx 页面上添加两个 TextBox 控件和两个 Button 控件，它们的属性设置如表 1 所示。

表 1 Default.aspx 页面中控件属性设置及其用途

控件类型 | 控件名称 | 主要属性设置 | 用途
标准/TextBox 控件 | txtUserName |  | 输入用户名
txtPwd | TextMode 属性设置为“Password” | 输入密码
标准/Button 控件 | btnLogin | Text 属性设置为“登录” | 登录按钮
btnCancel | Text 属性设置为“取消” | 取消按钮

用户单击【登录】按钮，将触发按钮的 btnLogin _Click 事件。在该事件中，使用 Session 对象记录用户名及用户登录的时间，并跳转到 Welcome.aspx 页面。代码如下：

protected void btnLogin_Click(object sender, EventArgs e)

{

if (txtUserName.Text=="mr" && txtPwd .Text =="mrsoft")

{

Session["UserName"] = txtUserName.Text;//使用 Session 变量记录用户名

Session["LoginTime"] = DateTime.Now;//使用 Session 变量记录用户登录系统的时间

Response.Redirect("~/Welcome.aspx");//跳转到主页

}

else

{

Response.Write("<script>alert('登录失败！请返回查找原因');location='Login.aspx'</script>");

}

}

（2）在该网站中，添加一个新页，将其命名为 Welcome.aspx。在页面 Welcome.aspx 的初始化事件中，将登录页中保存的用户登录信息显示在页面上。代码如下：

protected void Page_Load(object sender, EventArgs e)

{

Response.Write("欢迎用户"+Session["UserName"].ToString ()+"登录本系统!<br>");

Response.Write("您登录的时间为："+Session["LoginTime"].ToString ());

}