最近学习mvc, 我的理解controller 就是一个httphandler,view则为aspx页面当我们请求一个路径时,通过url重写,被路由到了对应的httphandler上了。httphandler处理完后,再将页面重定向到某个asp页面上,aspx页面上用来显示处理结果。我的问题是,如果我的理解是正确的话。那么httpHandler处理完后,转向到aspx页面显示结果的过程中,我想知道这个值是如何传递过去的。(mvc框架中是用viewdata等对象传递,但我认为这个不过是封装后的东西,我想知道本质的东西)比如,我就用原始的httphandler和aspx页面如何实现mvc框架一样的传值?(用session倒是可以。呵呵,但我觉得应该不是这样的)当然如果我理解错了,请大家也教教我
TempData保存在Session中, Controller每次执行请求的时候会从Session中获取TempData并删除Session,
获取完TempData数据后虽然保存在内部的字典对象中,
但是TempData集合的每个条目访问一次后就从字典表中删除.
也就是说TempData的数据至多只能经过一次Controller传递,
并且每个元素至多只能访问一次.
实则上应该都是字典,用于键值对应关系,分别对应ViewDataDictionary以及TempDataDictionary。
ViewData只能在当前的HTTP请求中,不会像session一样可以把数据带到下一个HTTP请求。
TempData跟ViewData的区别是他是临时性的,例如取代一些viewstatus一样保存客户端的上一次数据。他的内部是通过session来保存的。只要被取用一次后就自动清除session。