ViewData,ViewBag,TempData

public class HomeController : Controller
{
        public ActionResult Home()
        {
            ViewData["VD"] = "view data";
            ViewBag.Name = "view bag";
            TempData["TD"] = "temp data";
           
            return View();
        }

       //以上三个在Home View 中可以直接访问

        
        [HttpPost]
        public ActionResult Home()
        {
            String vd = ViewData["VD"].ToString();
            String vb = ViewBag.Name;
            String td = TempData["TD"].ToString();
           
            return View();
        }

       //从Home View中提交返回到Home Action中,此时,ViewData["VD"]不能访问(不存在),抛异常;ViewBag.Name为null值,不抛异常;TempData["TD"]可以访问;

      //若再一次从Home View中提交返回到Home Action中,此时,TempData["TD"]不能访问(不存在),抛异常;
}

摘录:

ViewData和TempData是字典类型,赋值方式用字典方式, ViewData["Name"]

ViewBag是动态类型,使用时直接添加属性赋值即可 ViewBag.Name 

ViewBag和ViewData只在当前的Action中有效,生命周期和 View 相同;

TempData可以通过转向继续使用,因为它的值保存在Session中。但TempData只能经过一次传递,之后会被系统自动清除 

ViewData和ViewBag 中的值可以互相访问,因为ViewBag的实现中包含了ViewData

posted on 2012-11-29 13:53  Gcam  阅读(376)  评论(0编辑  收藏  举报

导航