首页
|
网址导航
|
星座运势
|
天气预报
|
便民查询
|
万年历
|
手机查询
|
电子地图
|
交流论坛
影视预告
音乐咖啡
生活百科
CSS编程
JS编程
PHP编程
MYSQL编程
Linux服务器架设
Linux编程开发
热门搜索:
有限公司
感人故事
上海电视节
警匪
有情人
更多>>
热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)
热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)
站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.
(2009-08-08)
热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.
(2009-03-28)
台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)
台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)
热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)
热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)
台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)
特此通知:新台州站长论坛的数据信息全部升级成功!">
特此通知:新台州站长论坛的数据信息全部升级成功!
(2007-09-01)
台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)
台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)
禁止发广告之类的帖,已发现立即删除!(2007-08-30)
希望各位上传与下载有用资源和最新信息(2007-08-30)
热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)
网址推荐:
江南证券
崇左新闻网
帝国时代Ⅲ[英]
中国FLASH技术中
爱词霸在线翻译
东西方留学网
黑龙江农业职业
您当前的位置:
首页
»
ASP/ASP.NET编程
»
Asp.Net Mvc: 浅析TempData机制
Asp.Net Mvc: 浅析TempData机制
论坛链接
Asp.Net Mvc: 浅析TempData机制
发布时间:2009-04-07 15:57:33 浏览数:6159 发布者:superadmin 设置字体【
大
中
小
】
环境:
Windows 2008, VS 2008 SP1, Asp.Net Mvc 1.0
------------------------------------------------------------------------------
一. Asp.Net Mvc中的TempData
在Asp.Net Mvc框架的ControllerBase中存在一个叫做TempData的Property,它的类型为TempDataDictionary,顾名思义是一个字典类。TempData在Asp.Net Mvc中的作用是:可用于在Action执行过程之间传值。简单的说,你可以在执行某个Action的时候,将数据存放在TempData中,那么在下一次Action执行过程中可以使用TempData中的数据。
如:
上面的代码中,Index()给TempData添加了一个键值对,假设我们先请求Index这个Action,接着请求Index2这个Action,那么在Index2中,我们便可以得到之前添加到TempData的键值对。有趣的是,这时如果再次请求Index2,那么从TempData中读到的MyName的值会是null。于是,我们需要了解TempData的生命周期。
二. TempData的生命周期
我们知道Http是无状态的,为什么TempData可以在两次请求之前传递数据呢?很明显,这个数据必定是已某种形式保存了。查看Controller类的源代码,很容易的找到了我们想要的东西:
从上面的代码可以看出,每次在执行Action之前,都要调用一下TempData.Load()方法,执行完Action之后,再调用一下TempData.Save()方法。另外这里还有一个重要成员TempDataProvider。
阅读了相关源代码之后,真相大白了。
TempData.Load()
TempData.Save()
TempDataProvider用于暂存数据。在TempData.Load()方法中,TempDataProvider中保存的数据会被读到TempData中,供Action调用过程中使用。Action执行完后,TempData.Save()所作的事情则是,移除TempData中任何没有被更新的键值对,然后再将TempData中的数据保存,供下一次调用使用(注:也就是说,只有更新过的,以及新添加的键值对才能再下次request中继续使用)。为什么TempData中的数据需要迅速被清除呢?很简单,节约内存嘛。
三. ITempDataProvider
前面提到的TempDataProvider是Controller的一个Property,它的定义是这样的:
这里我们看到了一个默认实现的SessionStateTempDataProvider类。也就是说,默认情况下,Asp.Net Mvc通过SessionStateTempDataProvider来保存TempData的数据。很明显,数据是存在Session中的,也就是说,如果你禁用SessionState,那么你的页面就报异常了。
Asp.Net Mvc生来就是被设计为易扩展的,我们可以很容易通过实现自己的ITempDataProvider类来替换这个默认的SessionStateTempDataProvider。需要注意的是,TempDataProvider存放的数据必需具有用户独立性。
ITempDataProvider接口定义非常简单:
在MvcFutures中,你也可以找到一个CookieTempDataProvider,提供了将TempData存储在Cookie中的实现。
上一篇:
ASP.NET十个有效性能优化的方法
下一篇:
Asp.net关于动态输出服务器控件的
娱乐休闲专区
A 影视预告
B 音乐咖啡
C 英语阶梯
D 生活百科
网页编程专区
E AMPZ
F HTML
G CSS
H JS
I ASP
J PHP
K JSP
L MySQL
M AJAX
Linux技术区
N 系统管理
O 服务器架设
P 网络/硬件
Q 编程序开发
R 内核/嵌入
管理中心专区
S 发布网址
T 版主议事
U 事务处理