你也许需要一个SessionInterPagesHelper类
来源:互联网 发布:设置淘宝vip有什么用 编辑:程序博客网 时间:2024/05/17 02:49
在Web应用程序中,我们经常需要在不同的Page之间传递数据,这一般都是通过Session来进行的(如果传递的数据很简单,当然也可以使用QueryString),而Session都是采用键值对存储,键是一个字符串类型,这样,我们就常常在不同的页面之间使用同一个字符串作为键来相互通信。如果项目很小,这可能没有什么问题,但是如果一个项目中有数十个页面,需要在页面之间传递的信息可能也有数十种,那么就会潜伏两个重要的隐患:(1)如果在每个页面种都通过字符串作为键来索引到对应的数据,很可能会出现键同名的问题。而且我们的cs文件中的代码也不容易维护,如果需要删除一个session数据,则需要搜索所有的page页面来找对应的键。(2)session数据的初始化地点。我们在每个使用的地方都要判断一下
if(Session["***"] == null) ,这样简直太繁琐了。
对于上述两个问题,我的解决方案是提供一个SessionInterPagesHelper类,如果我们需要在页面之间传递数据,那么就直接访问这个类就好了,并且SessionInterPagesHelper会自动管理session数据的初始化,我们也不用在使用之前判空了。SessionInterPagesHelper的一个简单示例如下所示:
/// 用于简化对页面之间传递数据的管理
/// </summary>
public class SessionInterPagesHelper
{
private const string SelectedUsersList_Name = "SelectedUsersList" ; //键的名字
private const string SelectedPicsList_Name = "SelectedPicsList" ;//Session中的ArrayList
private HttpSessionState curSession ;
public SessionInterPagesHelper(HttpSessionState session)
{
this.curSession = session ;
}
SelectedUsersList#region SelectedUsersList
//ArrayList中是User对象 ,用于在页面之间传递被选中的用户
public ArrayList SelectedUsersList
{
get
{
if(this.curSession[SessionContentInterPages.SelectedUsersList_Name] == null)
{
this.curSession[SessionContentInterPages.SelectedUsersList_Name] = new ArrayList() ;
}
return (ArrayList)this.curSession[SessionContentInterPages.SelectedUsersList_Name] ;
}
}
public void ClearSelectedUsersList()
{
this.SelectedUsersList.Clear() ;
}
#endregion
SelectedPicsList#region SelectedPicsList
//ArrayList中是pic ID
public ArrayList SelectedPicsList
{
get
{
if(this.curSession[SessionContentInterPages.SelectedPicsList_Name] == null)
{
this.curSession[SessionContentInterPages.SelectedPicsList_Name] = new ArrayList() ;
}
return (ArrayList)this.curSession[SessionContentInterPages.SelectedPicsList_Name] ;
}
}
public void ClearSelectedPicsList()
{
this.SelectedPicsList.Clear() ;
}
#endregion
}
这样就将需要在多个page之间维护的地方集中在一处,而且通过const string定义键名,我们可以在编译时发现重名的情况。另外可以看到,SessionInterPagesHelper已经帮我们做好的容器初始化的工作,我们只需要在一个地方向容器(比如SelectedUsersList)中添加数据,而另外一个页面从对应的容器中取数据就行了。如果你使用完了数据,而且后面也不再需要这些数据,你可以调用对应的Clear方法(如ClearSelectedUsersList)。
不知道大家还有什么更好的方法?望告知!
- 你也许需要一个SessionInterPagesHelper类
- 你需要的也许只是一块面包
- 使用NHibernate的你也许需要SessionQuicker
- 也许你并不需要 Gulp, Grunt ?
- Android 学习之路--也许就是你需要的
- Android 学习之路--也许就是你需要的
- Android 学习之路--也许就是你需要的
- 也许你需要点实用的-Web前端笔试题
- 请教一个JAVA问题,对你也许很简单
- 你要评估DOORS? 我想这也许不是你需要的。
- 开发一个功能,你需要:
- js 实用函数 持续更新-->也许这里有你需要的
- 书单下载 | 关于算法、编程、机器学习等书籍,也许正是你所需要的
- 也许你会遇见
- SQL Server : 升级到SQL Server 2008,也许只需要一个理由
- 也许你也会有一个这样善良的老好人同事,但是他会坑你周末加班
- 也许...我们只是需要一个人
- 也许,未来需要重新规划
- Usage of Pseudocode
- 正式迁移blog到msn spaces
- Pseudocode Programming Process
- dos命令大全
- PM面试的问题
- 你也许需要一个SessionInterPagesHelper类
- 爱你
- wow1.6版更新详细说明
- 你的手机今天又被骗走了多少钱?
- 2005-8-1个人日志
- 让人可喜让人悲
- 修改ComboBox組件(v1)只能顯示,不可選取
- XCodeFactory2.0下载地址:http://www.netmako.com/LivedeviL/XCodeFactory2.0.exe
- 我的工具箱