zoukankan      html  css  js  c++  java
  • MVC3中 ViewBag、ViewData和TempData的使用和区别

    public dynamic ViewBag { get; }
    public ViewDataDictionary ViewData { get; set; }

    ViewBag和ViewData其实是互通的
    ViewBag和ViewData的区别:
    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传递,并且每个元素最多只能访问一次。之后自动删除

    。详情请看:http://www.cnblogs.com/tristanguo/archive/2009/04/06/1430062.html

  • 相关阅读:
    317 随笔
    316 随笔
    315 随笔
    python 第一章
    matlab 第四章 第一节 字符串 元胞
    matlab 第三章 第二节 多维数组
    matlab 第三章
    python 循环+break continue
    Springboot 教程 导入
    matlab 第二章 第三节 数值表示、变量及表达式
  • 原文地址:https://www.cnblogs.com/lindaWei/p/2860028.html
Copyright © 2011-2022 走看看