mvc中viewdata 和viewbag的区别

mvc中viewdata 和viewbag的区别

2013-06-18 15:43:45|  分类:
         MVC
         
       
       |举报
       |字号 订阅

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中查询数据时不需要类型转换 
有一些类型转换代码                                                                              可读性更好

用代码说明问题:

后台:

ViewData:
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:
List<string> colors = new List<string>();
colors.Add("red");
colors.Add("green");
colors.Add("blue");
ViewBag.ListColors = colors; 
ViewBag.DateNow = DateTime.Now;
ViewBag.Name = "Hajan";
ViewBag.Age = 25;
return View();

前台:

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>

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>

时间: 2024-10-03 22:42:29

mvc中viewdata 和viewbag的区别的相关文章

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生命周期为被调用前一直

ASP.NET MVC中ViewData、ViewBag和TempData

1.ViewData 1.1 ViewData继承了IDictionary<string, object>,因此在设置ViewData属性时,传入key必须要字符串型别,value可以是任意类型. 1.2 ViewData它只会存在这次的HTTP要求而已,而不像Session可以将数据带到下HTTP要求. public class TestController : Controller { public ActionResult Index() { ViewData["msg&quo

Asp.net MVC的ViewData与ViewBag以及TemplateData的使用与区别

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中查询数据时不需要类型转换 有一些类型转换代码 可读性更好 参考:http://www.c

MVC中数据传递 ViewBag的使用

ViewBag MVC3中 ViewBag.ViewData和TempData的使用和区别 在MVC3开始,视图数据可以通过ViewBag属性访问,在MVC2中则是使用ViewData.MVC3中保留了ViewData的使用.ViewBag 是动态类型(dynamic),ViewData 是一个字典型的(Dictionary). ViewBag和ViewData的区别: ViewBag 不再是字典的键值对结构,而是 dynamic 动态类型,它会在程序运行的时候动态解析.所以在视图中获取它的数据

MVC ViewData与ViewBag的区别

一.ViewData 1.ViewData派生自ViewDataDictionary,所以它具有字典的属性,例如:ContainsKey .Add .Remove 和 Clear : 2.字典键值是字符串类型,所以可以带空格,例如ViewData["a  b"]; 3.在视图中,只有string类型的值才能直接使用,其他的必须强制转换: 二.ViewBag 1.ViewBag派生自 DynamicViewData,所以它可以使用' '.'用法(ViewBag.A="张三&qu

Core Mvc传值ViewData、ViewBag和return view(model)

先定义一个Model类Student namespace Lession.Models { public class Student { public string Name { get; set; } public int Age { get; set; } public string Sex { get; set; } } } 控制器如下: using Lession.Models; using Microsoft.AspNetCore.Mvc; namespace Lession.Cont

MVC 的 ViewData 和ViewBag 的使用方法带案例

ViewDate是以键值对的方式储存数据 里面的数据也是用键值对的范式取出来 在视图也上直接取出来便利就行 ViewBag 可以把它看做一个类 下面有很多公共字段 你可以随便起名字 . 到前台也是把你存的字段取出来 这个字段里你可以存集合 也可以存数组 也可以存一个类 是个object类型的 个人建议再存数组和集合的时候用ViewDate 的发难存案存 .在没有实体类的时候 展示一组数据 数据量不大的时候也可以用ViewBag 看案例 后台存数据   List<Account> list =

MVC Controller向View传值(ViewData与ViewBag)

最近在开发项目中,使用的是ASP.NET MVC由于之前并没有接触,对于它的传值方式有些陌生,在这里进行初步总结积累学习! 一:使用 ViewData使用: public ActionResult Index() { List<string> colors = new List<string>(); colors.Add("red"); colors.Add("green"); colors.Add("blue"); Vi

ASP.NET MVC程序传值方式:ViewData,ViewBag,TempData和Session

转载原地址 http://www.cnblogs.com/sunshineground/p/4350216.html 在ASP.NET MVC中,页面间Controller与View之间主要有以下几种小量数据的传值方式:ViewData.ViewBag.TempData和Session变量. 下面就这四种传值方式做出详细介绍. 一.ViewData ViewData是一个继承自ViewDataDictionary类的Dictionary对象,它只能存储String Key/Object Valu