最近学习mvc, 我的理解controller 就是一个httphandler,view则为aspx页面当我们请求一个路径时,通过url重写,被路由到了对应的httphandler上了。httphandler处理完后,再将页面重定向到某个asp页面上,aspx页面上用来显示处理结果。我的问题是,如果我的理解是正确的话。那么httpHandler处理完后,转向到aspx页面显示结果的过程中,我想知道这个值是如何传递过去的。(mvc框架中是用viewdata等对象传递,但我认为这个不过是封装后的东西,我想知道本质的东西)比如,我就用原始的httphandler和aspx页面如何实现mvc框架一样的传值?(用session倒是可以。呵呵,但我觉得应该不是这样的)当然如果我理解错了,请大家也教教我

解决方案 »

  1.   

     ViewData的生命周期和View相同, 只对当前View有效.
        TempData保存在Session中, Controller每次执行请求的时候会从Session中获取TempData并删除Session, 
    获取完TempData数据后虽然保存在内部的字典对象中,
    但是TempData集合的每个条目访问一次后就从字典表中删除.
    也就是说TempData的数据至多只能经过一次Controller传递, 
    并且每个元素至多只能访问一次. 
      

  2.   

    原理 可能要看底层代码了。。有没有这方面的专家来解释下mArK.
      

  3.   

    就是用一个上下文对象嘛,跟httpcontext不是一样的嘛
      

  4.   

    MVC中的弱类型,主要有ViewData和TempData
    实则上应该都是字典,用于键值对应关系,分别对应ViewDataDictionary以及TempDataDictionary。
    ViewData只能在当前的HTTP请求中,不会像session一样可以把数据带到下一个HTTP请求。
    TempData跟ViewData的区别是他是临时性的,例如取代一些viewstatus一样保存客户端的上一次数据。他的内部是通过session来保存的。只要被取用一次后就自动清除session。
      

  5.   

    微软的MVC 09年开始就已经全部开源了,可以到官网下载源码回来自己研究。
      

  6.   

    如果当Viewdata里面的数据没用了,为了减少内存的使用,怎么把它销毁呢,