大家在做web开发的时候,经常会用到Session,最常用的就是登录功能了。
用户登录后,Session["LoginName"]="userName";
在其他页面再进行Session["LoginName"]的判断,用户状态是否过期等等。
如果很多个页面,我们每个页面都要进行判断,岂不是要累死!
我们可以用下面的方法来简化我们的工作:
1、添加一个BasePage类,System.Web.UI.Page,用此类来进行Session的判断
2、其他页面来继承BasePage
代码如下:


1
using
System;
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.HtmlControls;
8 using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
10
11 /// <summary>
12 /// BasePage 的摘要说明:
13 /// 基类页面,需要用到Session的页面需要继承此页面
14 /// </summary>
15 public class BasePage:System.Web.UI.Page
16 {
17 public BasePage()
18 {
19 //
20 // TODO: 在此处添加构造函数逻辑
21 //
22 }
23
24 /// <summary>
25 /// 当前的登录用户
26 /// </summary>
27 public string CurrentUsersName
28 {
29 get
30 {
31 return (HttpContext.Current.Session[ " UserName " ] != null ? HttpContext.Current.Session[ " UserName " ].ToString() : string .Empty);
32 }
33 set
34 {
35 HttpContext.Current.Session[ " UserName " ] = value;
36 }
37 }
38 }
2 using System.Data;
3 using System.Configuration;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.HtmlControls;
8 using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
10
11 /// <summary>
12 /// BasePage 的摘要说明:
13 /// 基类页面,需要用到Session的页面需要继承此页面
14 /// </summary>
15 public class BasePage:System.Web.UI.Page
16 {
17 public BasePage()
18 {
19 //
20 // TODO: 在此处添加构造函数逻辑
21 //
22 }
23
24 /// <summary>
25 /// 当前的登录用户
26 /// </summary>
27 public string CurrentUsersName
28 {
29 get
30 {
31 return (HttpContext.Current.Session[ " UserName " ] != null ? HttpContext.Current.Session[ " UserName " ].ToString() : string .Empty);
32 }
33 set
34 {
35 HttpContext.Current.Session[ " UserName " ] = value;
36 }
37 }
38 }
登录窗体 拖放一个TextBox :txtUserName 和一个 Button:btnLogin
后台cs代码:


using
System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
public partial class Login : BasePage
{
protected void Page_Load( object sender, EventArgs e)
{
}
protected void btnLogin_Click( object sender, EventArgs e)
{
this .CurrentUsersName = this .txtUserName.Text;
Response.Redirect( " Default.aspx " );
}
}
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
public partial class Login : BasePage
{
protected void Page_Load( object sender, EventArgs e)
{
}
protected void btnLogin_Click( object sender, EventArgs e)
{
this .CurrentUsersName = this .txtUserName.Text;
Response.Redirect( " Default.aspx " );
}
}
两个Defualt测试页面
后台cs代码:


1
using
System;
2 using System.Configuration;
3 using System.Data;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.HtmlControls;
8 using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
10
11 public partial class Default : BasePage
12 {
13 protected void Page_Load( object sender, EventArgs e)
14 {
15 if (String.IsNullOrEmpty(CurrentUsersName))
16 {
17 Response.Write( " <a href='Login.aspx'>请重新登录</a> " );
18 }
19 else
20 {
21 Response.Write(CurrentUsersName);
22 }
23 }
24 }
25
2 using System.Configuration;
3 using System.Data;
4 using System.Web;
5 using System.Web.Security;
6 using System.Web.UI;
7 using System.Web.UI.HtmlControls;
8 using System.Web.UI.WebControls;
9 using System.Web.UI.WebControls.WebParts;
10
11 public partial class Default : BasePage
12 {
13 protected void Page_Load( object sender, EventArgs e)
14 {
15 if (String.IsNullOrEmpty(CurrentUsersName))
16 {
17 Response.Write( " <a href='Login.aspx'>请重新登录</a> " );
18 }
19 else
20 {
21 Response.Write(CurrentUsersName);
22 }
23 }
24 }
25
代码下载:http://files.cnblogs.com/love_study/RefactoringSession.rar