zoukankan      html  css  js  c++  java
  • MVC3之ViewData与ViewBag

    首先先用代码来说话:

    ViewData:

    public 
    ActionResult Index()
    {
    List<string>
     colors = new 
    List<string>();
    colors.Add("red");
    colors.Add("green");
    colors.Add("blue");
    ViewData["listColors"]
     = colors;
    ViewData["dateNow"]
     = DateTime.Now;
    ViewData["name"]
     = "Hajan";
    ViewData["age"]
     = 25;
    return 
    View();
    }

    ViewBag:

    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>

    效果:

    ViewData:生命周期和View相同,仅对当前View有效。

    ViewBag:和ViewData生命周期相同,也是对但前View有效,不同的是ViewBag的类型不再是字典的键值对结构,而是dynamic动态类型,属于MVC3里面新增的部分.

    ViewData ViewBag
    它是Key/Value字典集合 它是dynamic类型对像
    从Asp.net MVC 1 就有了 ASP.NET MVC3 才有
    基于Asp.net 3.5 framework 基于Asp.net 4.0与.net framework
    ViewData比ViewBag快 ViewBag比ViewData慢
    在ViewPage中查询数据时需要转换合适的类型 在ViewPage中查询数据时不需要类型转换
    有一些类型转换代码 可读性更好
  • 相关阅读:
    delphi7 projectoptions打开出错
    file not found frmaddBdsuo.dcu
    session 不活动是因为未注册 WebSessionActivator,或试图在 IHttpHandler 的构造函数中 访问session
    oracle导出指定的表,并将指定的表追加到其他dmp文件中(不影响dmp中其他的表)
    父类指针转换成子类指针
    为什么会是这样的输出结果
    字符数组
    变量的声明和定义
    const对象默认为文件的局部变量
    输出结果
  • 原文地址:https://www.cnblogs.com/kingsony/p/3335314.html
Copyright © 2011-2022 走看看