在使用MVC框架的过程中,往界面传值,我们使用的ViewData。如ITOO部分代码图解:

     当然除了ViewData,我们还能够使用同卵兄弟(ViewBag)来完毕相同的功能,详情demo:

我们先看看经常使用的ViewData的Controller和View以及执行情况:

Controller简易代码:

 public ActionResult Index()
{
//定义了一个集合Fruits
List<string> Fruits = new List<string>();
Fruits.Add("apple");
Fruits.Add("banana");
Fruits.Add("orange");
//将Fruits集合赋值给ViewData
ViewData["ListFruits"]
= Fruits;
//简单赋值
ViewData["name"]
= "huohuo"; return View();
}

View简易代码:

<html>
<p>
@*这是我们经常使用的一种,直接把ViewData单个赋值显示到页面上*@
My name is  <b>@ViewData["name"]</b><br />
I just want to eat some Fruits, like:
</p>
<ul id="fruit">
@*因为是一个数组/集合,所以必须遍历才可以实现*@
@foreach (var fruit in ViewData["ListFruits"] as List<string>)
{
<li><font fruit="@fruit">@fruit</font></li>
}
</ul>
</html>

最后执行的效果:

先不说不论什么结果,我们紧接着看看ViewBag的Controller,View和执行结果:

Controller简易代码:

public ActionResult Index()
{
List<string>Fruits = new List<string>();
Fruits.Add("apple");
Fruits.Add("banana");
Fruits.Add("orange");
ViewBag.ListFruits = Fruits; //colors
ViewBag.Name
= "huohuo";
return View();
}

View简易代码:

<html>
<p>
@*这是我们经常使用的一种。直接把ViewData单个赋值显示到页面上*@
My name is  <b>@ViewBag.Name</b><br />
I just want to eat some Fruits, like:
</p>
<ul id="fruit">
@*因为是一个数组/集合,所以必须遍历才可以实现*@
@foreach (var fruit in ViewBag.ListFruits)
{
<li><font >@fruit</font></li>
}
</ul>
</html>

最后的执行效果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

     通过对照可以发现事实上两者的执行结果是一样的,那么既然都可以实现同样的功能。那么两者同卵双胞胎究竟有何异同点呢?以下就和小编来分析分析:

     上面举例demo仅仅是想表达一下执行的效果,事实上对于ViewData和ViewBag,两者并没有什么差别。仅仅是ViewData出生的比較早而已。他是在Viewdata的成长基础上又优化了一下自己的功能而已。

ViewData VS ViewBag
  ViewData ViewBag
类型 Key/Value字典集合 dynamic类型对象
出生基础 基于ASP.Net  3.5 基于ASP.Net 4.0
速度
是否须要类型转换 须要转换合适类型 无需转换
基于时期 Asp.net MVC 1就出生了 MVC 3 才出世

     至与我们为什么一直用ViewData,我想基本的原因还是由于速度相对快些,虽然有时候须要通过Json字符串来传值,可是这也是无关紧要的,对于ViewBag。不同的就是多了一层Dynamic类型,它能够在程序执行的时候动态解析。事实上也就是在程序执行的时候占有了主动性,所以假设仅仅是简单的显示值,依据自己的喜爱来使用即可。

ASP.net MVC+ViewData VS ViewBag的更多相关文章

  1. asp.net mvc ViewData 和 ViewBag区别,TempData

    ViewData 和 ViewBag都是页面级别的生命周期,TempData--Passing data between the current and next HTTP requests Temp ...

  2. ASP.NET MVC ViewData/ViewBag 简单小结

    近期在项目中遇到一个问题,就是用ViewBag.Model存储匿名对象传递给View,但是需要根据条件给匿名对象添加属性,这个可真心不易,Google了一下发现很多方案都是动态编译神马的,感觉好高大上 ...

  3. asp.net MVC ViewData详解

    转自:http://www.cnblogs.com/gaopin/archive/2012/11/13/2767515.html 控制器向视图中传值ViewData详解 1.将一个字符串传值到视图中 ...

  4. MVC ViewData和ViewBag[转]

    转自:http://blog.csdn.net/a497785609/article/details/7854402#t0       视图数据可以通过ViewBag属性访问,它主要是为了从Contr ...

  5. MVC ViewData和ViewBag

        视图数据可以通过ViewBag属性访问,它主要是为了从Controller到view进行传值用的,类似有所使用的ViewData[] 字典类.对于ViewBag是如此的强大,意味着你能动态的s ...

  6. MVC ViewData与ViewBag的区别

    一.ViewData 1.ViewData派生自ViewDataDictionary,所以它具有字典的属性,例如:ContainsKey .Add .Remove 和 Clear : 2.字典键值是字 ...

  7. MVC ViewData和ViewBag 参数名一样表示同一个值

    @ViewData["MenuName"] 和 @ViewBag.MenuName 表示同一个值

  8. 不用asp.net MVC,用WebForm照样可以实现MVC(请看最后一句话)

    在<避开WebForm天坑,拥抱ASP.Net MVC吧>这篇博客中我讲到了ASP.net WebForm由于一些先天的“诱导犯罪”的缺陷,现在用ASP.net MVC的公司越来越多.但是 ...

  9. 不用asp.net MVC,用WebForm照样能够实现MVC

    在<避开WebForm天坑,拥抱ASP.Net MVC吧>这篇博客中我讲到了ASP.net WebForm由于一些先天的"诱导犯罪"的缺陷,如今用ASP.net MVC ...

随机推荐

  1. JavaEE-03 JSP数据交互02

    学习要点 application pageContext JSP对象作用域 cookie application 作用 类似于系统的“全局变量”,用于在同一个服务器内的所有用于之间的数据共享,对于整个 ...

  2. Yii1 获取当前请求的url

    echo Yii::app()->getRequest()->getUrl();

  3. zzuli 1905 小火山的跳子游戏

    Description   小火山和火山火山在一块玩跳子游戏.规则如下:   1:跳子的起始位置为0,棋盘大小从1到N   2:每次跳子跳k步. 例如当前位置为i, 那么下一步为i + k   3:跳 ...

  4. 调试jz2440生成特定后缀的命令

    生成dis命令: arm-linux-objdump -D u-boot> u-boot.dis 版权声明:本文为博主原创文章,未经博主允许不得转载.

  5. ArrayList集合的遍历

    ArrayLIstDemo3.java import java.util.ArrayList; public class ArrayListDemo3 { public static void mai ...

  6. .NET Core 文件的上传与下载

    1.前言 文件导入导出是简单且常用的功能,以下示例实现了文件上传与下载的几种方法,如有不妥的地方,欢迎指正.小白一枚,在往目标前进. 2.1.文件上传    --    纯文件 <form ac ...

  7. HDU 2462 The Luckiest number

    The Luckiest number Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Ori ...

  8. iOS-runtime-根据类名推送到任意控制器,且实现属性传值

    // // WJRuntime.m // RuntimeSkip // // Created by tqh on 15/9/8. // Copyright (c) 2015年 tqh. All rig ...

  9. [luoguP2016] 战略游戏(DP)

    传送门 f[i][0]表示不选当前节点,当前节点的所有儿子节点都选f[i][1]表示选当前节点,儿子节点可选可不选 #include <cstdio> #include <cstri ...

  10. HDU3572:Task Schedule【最大流】

    上了一天课 心塞塞的 果然像刘老师那么说 如果你有挂科+4级没过 那基本上是WF队 题目大意:有时间补吧 思路:给每个任务向每个时间点连边容量为1 每个时间点向汇点连边 容量为机器的个数 源点向每个任 ...