ASP.net MVC+ViewData VS ViewBag

     在使用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>
最后的运行效果:

     通过对比可以发现其实两者的运行结果是一样的,那么既然都能够实现相同的功能,那么两者同卵双胞胎到底有何异同点呢?下面就和小编来分析分析:

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

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

     至与我们为什么一直用ViewData,我想主要的原因还是因为速度相对快些,尽管有时候需要通过Json字符串来传值,但是这也是无关紧要的,对于ViewBag,不同的就是多了一层Dynamic类型,它可以在程序运行的时候动态解析,其实也就是在程序运行的时候占有了主动性,所以如果只是简单的显示值,根据自己的喜爱来使用就行。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值