• MVC ViewData和ViewBag(转载)


    视图数据可以通过ViewBag属性访问,它主要是为了从Controller到view进行传值用的,类似有所使用的ViewData[] 字典类。对于ViewBag是如此的强大,意味着你能动态的set/get 值,增加任何数量的的额外字段而不需要强类型的检测。如:

    Controller

     1 public 
     2 ActionResult Index()
     3 {
     4 List<string>
     5  colors = new 
     6 List<string>();
     7 colors.Add("red");
     8 colors.Add("green");
     9 colors.Add("blue");
    10 ViewData["listColors"]
    11  = colors;
    12 ViewData["dateNow"]
    13  = DateTime.Now;
    14 ViewData["name"]
    15  = "Hajan";
    16 ViewData["age"]
    17  = 25;
    18 return 
    19 View();
    20 }

    Controller

     1 public 
     2 ActionResult Index()
     3 {
     4 List<string>
     5  colors = new 
     6 List<string>();
     7 colors.Add("red");
     8 colors.Add("green");
     9 colors.Add("blue");
    10 ViewBag.ListColors = colors; //colors
    11  is List
    12 ViewBag.DateNow
    13  = DateTime.Now;
    14 ViewBag.Name
    15  = "Hajan";
    16 ViewBag.Age
    17  = 25;
    18 return 
    19 View(); 
    20 }

    你和上面的对比 你看见了不同吗?

     
    View
    对应前台视图:

    1.使用ViewData

    <p>
    My name is <b>@ViewData["name"] </b>,
    <b>@ViewData["age"] </b>years old.
    <br />
    I like the following colors:
    </p>
    <ul id="colors">
    @foreach (var color in ViewData["listColors"] as List<string>)
    {
    <li><font color="@color">@color </font></li>
    }
    </ul>
    <p>
    @ViewData["dateNow"]
    </p>
    2.使用ViewBag
    <p>
    My name is <b>@ViewBag.Name</b>, <b>@ViewBag.Age</b> years old.
    <br />
    I like the following colors:
    </p>
    <ul id="colors">
    @foreach (var color in ViewBag.ListColors)
    {
    <li><font color="@color">@color</font> </li>
    }
    </ul>
    <p>
    @ViewBag.DateNow
    </p>
    效果图:

     
    ViewBag、ViewData 和 TempData 的区别:
    ViewData 和 TempData 都可以传递弱类型数据,区别如下:
    ViewData 只在当前 Action 中有效,生命周期和 View 相同;
    TempData 的数据至多只能经过一次Controller传递,并且每个元素至多只能被访问一次,访问以后,自动被删除。
    TempData 一般用于临时的缓存内容或抛出错误页面时传递错误信息,可以将TempData 在使用之前存储到相应的 ViewData 中以备循环使用。
     
  • 相关阅读:
    仅允许修改输入框括号中内容
    Wget/httrack 爬取整站资源
    413 Request Entity Too Large 问题及方案详细分析
    python 安装 tensorflowjs
    WiFi TIM DTIM
    免费 CDN 玩法 —— 文件一键上传到 NPM
    函数式编程 —— 将 JS 方法函数化
    uniapp 复制操作
    splice() 方法用于添加或删除数组中的元素
    uni更改顶部标题
  • 原文地址:https://www.cnblogs.com/net515/p/2948414.html
Copyright © 2020-2023  润新知