MVC中数据传递 ViewBag的使用
ViewBag
MVC3中 ViewBag、ViewData和TempData的使用和区别
在MVC3开始,视图数据可以通过ViewBag属性访问,在MVC2中则是使用ViewData。MVC3中保留了ViewData的使用。ViewBag 是动态类型(dynamic),ViewData 是一个字典型的(Dictionary)。
ViewBag和ViewData的区别:
ViewBag 不再是字典的键值对结构,而是 dynamic 动态类型,它会在程序运行的时候动态解析。所以在视图中获取它的数据时候不需要进行类型转换
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中查询数据时不需要类型转换 |
有一些类型转换代码 | 可读性更好 |
Contorller
<pre class="csharp" name="code">using NewOjbect.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace NewOjbect.Controllers { public class HomeController : Controller { public ActionResult Index() { ViewBag.UserName = "无盐海"; ViewBag.Age = "25"; ViewBag.Gender = 1; string[] Itmes = new string[] { "中国", "美国", "德国" }; ViewBag.itemsA = Itmes;// viewbag是一个新的dynamic类型关键字的封装器 //ViewData["Items"] = items; return View(); } } }
View
<pre class="html" name="code"><html> <head> <meta name="viewport" content="width=device-width" /> <title>Test2</title> </head> <body> <div> 用户名:<input type="text" id="UserName" name="UserName" value="@ViewBag.UserName" /></br> 年 龄: <input type="text" id="age" name="age" value=@ViewBag.Age /></br> 性 别:<input type="text" id="Gender" name="Gender" value="@ViewBag.Gender" /></br> <button>提交</button> <!---这里输出国家名-->> @foreach (dynamic item in ViewBag.itemsA) { <p>@item</p> } </div> </body> </html>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。