• mvc4中viewbag viewdata 和 tempdata的区别


    ViewBag 不再是字典的键值对结构,而是 dynamic 动态类型,它会在程序运行的时候动态解析。
    
    eg:
    
    
           ViewBag.NumberObjs = new string[] { "one", "two", "three" };
                ViewData["NumberArrs"] = new string[] { "one", "two", "three" };
    
                //正确,dynamic类型的解析作用,foreach可以使用
                foreach (var item in  ViewBag.NumberObjs)
                {
                    
                }
    
                //错误: foreach语句不可作用于object类型对象上
                foreach (var item in ViewData["NumberArrs"])
                {
    
                }
    
    ViewBag其实本质就是ViewData,只是多了层Dynamic控制。所以,使用何种方式完全取决于你个人的爱好。
    
     
    
    ViewBag和ViewData仅针对当前Action中有效,生命周期和View相同。
    
    TempData: 保存在session中,controller每次执行请求时,会从Session中获取Tempdata(),而后清除session,
    
    获取完TempData数据,虽然保存在内部字典中。但字典中每个条目访问一次后就从字典中删除。因此Tempdata数据最多只能经过一次controller传递,并且每个元素最多只能访问一次。之后自动删除
    
    一. 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的生命周期。 如果tempdate中的数据被访问过后,tempdate就无法再次被访问了.
    所以TempData中的数据一旦被访问,下次就访问不到了,因为它已经完成了历史使命了
  • 相关阅读:
    hdu 4504(背包最优方案数)
    hdu 4508(完全背包)
    hdu 4509(memset标记)
    hdu 2188
    hdu 2141(二分)
    《算术探索》(高斯) 第一篇(第112目) 总结
    数论概论(Joseph H.Silverman) 定理39.1 连分数的递归公式
    数论概论(Joseph H.Silverman) 定理39.2 连分数相邻收敛项之差定理
    《算术探索》(高斯) 第一篇(第112目) 总结
    有理数的小数表示若无限,则必为无限循环的
  • 原文地址:https://www.cnblogs.com/sdya/p/3919133.html
Copyright © 2020-2023  润新知