在ASP.NET MVC 3中 何时使用 ViewBag ViewData TempData简介


一、ViewBag ViewData TempData 简介


ViewBag : 是一个动态类型 public dynamic ViewBag
ViewData: 是一个字典类型 public ViewDataDictionary ViewData
TempData: 也是一个字典类型

这三种对象都被应用于View和Controller之间数值传递
ViewBag.test = new string[] {“a”, “b”, “c” };
ViewData[“test”] = new string[] {“a”, “b”, “c”};
TempData[“test”] = new string[]{“a”, “b”, “c”};

 public class HomeController : Controller
{
    // ViewBag & ViewData TempData 例子
    public ActionResult Index()
    {
        var test = new testClass
        {
            value1 = "a",
            value2 = "b",
            value3 = "c",
            value4 = "d",
            value5 = "e", 
        };
    
        ViewData["testViewValue"] = test;
        ViewBag.testViewValue     = test;
        TempData["testViewValue"] = test;  
    
        return View();
    }
}


*.shtml调用方法

  *.shtml 
 
@ViewBag.testViewValue.value1 @viewData["testViewValue"].value1 @TempData["testViewValue"].value1


二、ViewBag ViewData TempData生命周期


ViewBag/viewData 只针对view所对应的Action有效,
当view关闭后 ViewBag ViewData数据消失
TempData : 数据保存在Session中,controller执行请求时,会取出TempData,然后清除

TempData: 保存在session中,
controller每次执行请求时,会从Session中获取Tempdata(),而后清除session,
TempData数据最多只能经过一次Controller传递,传递后数据会被自动删除