zoukankan      html  css  js  c++  java
  • ASP.NET MVC中viewData、viewBag和templateData的使用与区别

    一:类型比较

    1.1)ViewBag是动态类型(dynamic)。

    1.2)ViewData是一个字典型的(Dictionary)-->TempDataDictionary。

    1.3)TempData是一个字典型的(Dictionary)-->ViewDataDictionary。

    二:生命周期和作用域

    2.1)ViewBag生命周期和View相同,只能作用于一个View。

    2.2)ViewData生命周期和View相同,只能作用于一个View。

    2.3)TempData生命周期为被调用前一直存在,但是调用一次的后值就会被删除,且可以在不同的Action中进行传值。

    TempData  保存在Session中,Controller每次执行请求的时候,会从Session中先获取 TempData,而后清除Session,获取完TempData数据,虽然保存在内部字典对象中,但是其集合中的每个条目访问一次后就从字典表中删 除。具体代码层面,TempData获取过程是通过SessionStateTempDataProvider.LoadTempData方法从 ControllerContext的Session中读取数据,而后清除Session,故TempData只能跨Controller传递一次。

    三:使用区别

    3.1)viewBag不需要数据转换

    Controller: ViewBag.key = new Dictionary<string, string>();

    View :

    @foreach (var item in ViewBag.key)
    {
    @item;
    }

    3.2)ViewBag中查询数据是需要转换数据类型

    Controller: ViewData["key"] = new Dictionary<string, string>() { { "key1", "value1" }, { "key2", "value2" } };

    View :

    @foreach (var item in ViewData["key"] as Dictionary<string, string>)
    {
    @item;
    }

    3.3)TempData使用和ViewBag一样,但是注意TempData对应的值只要被调用一次后就会被自动清空。

  • 相关阅读:
    博客备份小工具3
    博客转发小工具1
    04-属性选择器
    05-伪类选择器
    03-高级选择器
    02-css的选择器
    01-css的引入方式
    函数进阶-(命名空间、作用域、函数嵌套、作用域链、函数名本质、闭包)
    函数基础-(引子、定义函数、调用函数、函数返回值、函数参数)
    Python之路【第08章】:Python函数
  • 原文地址:https://www.cnblogs.com/ahlx/p/5237323.html
Copyright © 2011-2022 走看看