本文主要是介绍MVC3中 ViewBag、ViewData和TempData的使用和区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在MVC3开始,视图数据可以通过ViewBag属性访问,在MVC2中则是使用ViewData。MVC3中保留了ViewData的使用。ViewBag 是动态类型(dynamic),ViewData 是一个字典型的(Dictionary)。
它们的定义如下:
public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; }
控制器中代码:

public ActionResult Index() { ViewBag.Message_ViewBag = "I am viewbag"; ViewData["Message_ViewData"] = "I am viewdata";return View(); }

视图代码:
@{ ViewBag.Title = "主页"; }<h2>@ViewBag.Message_ViewBag</h2> <h2>@ViewData["Message_ViewData"]</h2>
<h2>@ViewBag. Message_ViewData </h2> <h2>@ViewData["Message_ViewBag "]</h2>
ViewBag和ViewData的区别:
ViewBag 不再是字典的键值对结构,而是 dynamic 动态类型,它会在程序运行的时候动态解析。
TempData的使用
同ViewData和ViewBag一样,TempData也可以用来向视图传递数据。只是ViewData和ViewBag的生命周期和View相同,只对当前View有用。而TempData则可以在不同的Action中进行传值,类似webform里的Seesion。如下:public ActionResult Index(){ ViewBag.hello = "hello,this is viewBag"; ViewData["hi"] = "hi,this is viewData"; TempData["abc"] = "this is tempdata"; return View(); }
<h2>关于</h2> <p> @ViewBag.hello @ViewData["key"] @TempData["abc"] </p>
这篇关于MVC3中 ViewBag、ViewData和TempData的使用和区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!