ViewData是Key/Value字典集合,从Asp.net MVC 1 就有了,是基于Asp.net 3.5 framework的,ViewData比ViewBag快,在ViewPage中查询数据时需要转换合适的类型。
而ViewBag是dynamic类型对像,是从ASP.NET MVC3 才有的,基于Asp.net 4.0以上,ViewBag比ViewData慢,在ViewPage中查询数据时不需要类型转换,可读性更好。
那在开发过程中,到底用哪个好呢?我个人从面向对象的角度更推荐使用ViewBag,其实他们两个实现的功能都一样。
分别举两个例子说明问题:
例1,ViewData
controller中:
List<int> intList = new List<int>();
intList.Add(1);
intList.Add(2);
ViewData["intList"] = intList;
cshtml中:
@foreach ( var module in ViewData["intList"] as List<int> )
//遍历
{
例2,ViewBag
controller中:
List<int> intList = new List<int>();
intList.Add(1);
intList.Add(2);
ViewBag.intList = intList;
cshtml中:
@foreach ( var module in ViewBag.intList )
//遍历
{
看了例子大家应该看出区别了吧,虽然之前提到ViewData比ViewBag快,但是我个人还是推荐使用ViewBag。再说了,ORM有ADO.NET快吗?可是实际开发的时候当然还要考虑开发效率,面向对象等等了。

站星网
为您推荐
微服务架构学习与思考:SOA架构与微服务架构对比分析?它们之间区别是什么?
Web前端入门第 55 问:JavaScript 严格模式与非严格模式区别
在 Javascript 中 声明时用 var 与不用 var 的区别

float 与 double 类型区别

CPU、GPU 和 TPU 之间有什么区别?

Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库

ASP.NET MVC与Web Forms的区别

C#中的String和StringBuilder的区别
.NET C#中的IEnumerable和IEnumerator的区别

MySQL 5.x和MySQL 8.x数据库的区别
C# Const 和 ReadOnly的区别
Asp.Net Core进程内托管 和 进程外托管的区别
数据库SQL Server2014和SQL Server2019的区别和如何选择?
_ViewStart.cshtml文件的作用
