使用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 ());
}