ViewBag
在MVC3開始。视图数据能够通过ViewBag属性訪问。在MVC2中则是使用ViewData。MVC3中保留了ViewData的使用。ViewBag 是动态类型(dynamic),ViewData 是一个字典型的(Dictionary)。
ViewBag和ViewData的差别:
ViewBag 不再是字典的键值对结构。而是 dynamic 动态类型。它会在程序执行的时候动态解析。
所以在视图中获取它的数据时候不须要进行类型转换
ViewData
ViewBag
它是Key/Value字典集合
从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
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类型keyword的封装器 //ViewData["Items"] = items;
return View();
}
}
}
View
Test2
username:
年 龄:
性 别:
提交
>
@foreach (dynamic item in ViewBag.itemsA)
{
@item
}