在Web应用程序中,我们经常需要在不同的Page之间传递数据,这一般都是通过Session来进行的(如果传递的数据很简单,当然也可以使用QueryString),而Session都是采用键值对存储,键是一个字符串类型,这样,我们就常常在不同的页面之间使用同一个字符串作为键来相互通信。如果项目很小,这可能没有什么问题,但是如果一个项目中有数十个页面,需要在页面之间传递的信息可能也有数十种,那么就会潜伏两个重要的隐患:(1)如果在每个页面种都通过字符串作为键来索引到对应的数据,很可能会出现键同名的问题。而且我们的cs文件中的代码也不容易维护,如果需要删除一个session数据,则需要搜索所有的page页面来找对应的键。(2)session数据的初始化地点。我们在每个使用的地方都要判断一下
if(Session["***"] == null) ,这样简直太繁琐了。
对于上述两个问题,我的解决方案是提供一个SessionInterPagesHelper类,如果我们需要在页面之间传递数据,那么就直接访问这个类就好了,并且SessionInterPagesHelper会自动管理session数据的初始化,我们也不用在使用之前判空了。SessionInterPagesHelper的一个简单示例如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/39d7d940c8c2f194345d303509c06b40.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/ec457d541b8a2a10d13904510d64f5e1.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/addcc1c305ca6dedab1871875ff931a8.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9780a3da2ece8086374b017eb3e46534.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/39d7d940c8c2f194345d303509c06b40.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/ec457d541b8a2a10d13904510d64f5e1.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9d9a2c2a8c9b35603b4023468bb36248.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/432cadab902757836a2dcaecfb0b0840.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/183a9d89fde28c68400860f99311d7f2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9d9a2c2a8c9b35603b4023468bb36248.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/432cadab902757836a2dcaecfb0b0840.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9d9a2c2a8c9b35603b4023468bb36248.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/432cadab902757836a2dcaecfb0b0840.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9d9a2c2a8c9b35603b4023468bb36248.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/432cadab902757836a2dcaecfb0b0840.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9d9a2c2a8c9b35603b4023468bb36248.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/432cadab902757836a2dcaecfb0b0840.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/183a9d89fde28c68400860f99311d7f2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/183a9d89fde28c68400860f99311d7f2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/183a9d89fde28c68400860f99311d7f2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9d9a2c2a8c9b35603b4023468bb36248.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/432cadab902757836a2dcaecfb0b0840.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/183a9d89fde28c68400860f99311d7f2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/183a9d89fde28c68400860f99311d7f2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9d9a2c2a8c9b35603b4023468bb36248.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/432cadab902757836a2dcaecfb0b0840.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9d9a2c2a8c9b35603b4023468bb36248.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/432cadab902757836a2dcaecfb0b0840.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9d9a2c2a8c9b35603b4023468bb36248.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/432cadab902757836a2dcaecfb0b0840.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9d9a2c2a8c9b35603b4023468bb36248.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/432cadab902757836a2dcaecfb0b0840.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/183a9d89fde28c68400860f99311d7f2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/183a9d89fde28c68400860f99311d7f2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/183a9d89fde28c68400860f99311d7f2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/9d9a2c2a8c9b35603b4023468bb36248.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/432cadab902757836a2dcaecfb0b0840.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/b854634c0904529d4018c4c3336be836.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/15b1c5de62d0b694d97c6d1b46298fcf.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/183a9d89fde28c68400860f99311d7f2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/183a9d89fde28c68400860f99311d7f2.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/addcc1c305ca6dedab1871875ff931a8.gif)
这样就将需要在多个page之间维护的地方集中在一处,而且通过const string定义键名,我们可以在编译时发现重名的情况。另外可以看到,SessionInterPagesHelper已经帮我们做好的容器初始化的工作,我们只需要在一个地方向容器(比如SelectedUsersList)中添加数据,而另外一个页面从对应的容器中取数据就行了。如果你使用完了数据,而且后面也不再需要这些数据,你可以调用对应的Clear方法(如ClearSelectedUsersList)。
不知道大家还有什么更好的方法?望告知!