在使用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. Java BufferedReader文件读取 带缓冲区的字符流

    package org.jimmy.autosearch2019.test; import java.io.BufferedReader; import java.io.FileInputStream ...

  2. zay大爷的膜你题 D2T1 江城唱晚

    依旧是外链... 这一次网易云爆炸了....所以我决定后面的都用QQ 下面是题面 这道题是一道傻逼题 数学题,我们仔细看一看,首先有m朵花的话,我们就有m!种排列方式(也就是m的全排列), 然后我们假 ...

  3. 关于Java多线程(JAVA多线程实现的四种方式)

    Java多线程实现方式主要有四种:继承Thread类.实现Runnable接口.实现Callable接口通过FutureTask包装器来创建Thread线程.使用ExecutorService.Cal ...

  4. mybatis-spring_缓存

    学习之前需要先了解一下什么是mybatis一级缓存? LZ推荐:https://blog.csdn.net/niunai112/article/details/80601793#%E4%B8%80%E ...

  5. No-3.Linux 终端命令格式

    Linux 终端命令格式 01. 终端命令格式 command [-options] [parameter] 说明: command:命令名,相应功能的英文单词或单词的缩写 [-options]:选项 ...

  6. js前端导出excel

    此例子是利用html特性,纯前端导出excel,样式不好看,兼容主流浏览器. var tableid = jQuery(this).closest("div.tab-label-wrap&q ...

  7. Linux常用命令大全2

    Linux命令是对Linux系统进行管理的命令.对于Linux系统来说,无论是中央处理器.内存.驱动.键盘.鼠标,还是用户等都是文件,Linux命令是它正常运行的核心.接下来,就来看看xp系统下载编辑 ...

  8. 快速安装zabbix

    环境:CentOS 7.x 数据库mysql已事先安装 1.配置epel源 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/r ...

  9. C语言学习11

    直接插入排序 //直接插入排序 #include <stdio.h> void main() { ], i; int insort(int a[], int n); printf(&quo ...

  10. POJ 1386 单词接龙问题

    题目大意: 给一堆字母,让它们进行接龙,要头对尾能够接的上,问有没有一种方法让所有成语都完成接龙 这道题实际上是在考虑是否存在一条欧拉通路,每个单词产生一条有向线段,由第一个字母指向最后一个字母 这道 ...