最近在学习MVC,总结一下自己的情况和大家分享一下。
ViewData对象
程序员喜欢将ViewData叫做ViewData对象,其实从底层定义角度来说,称号其为ViewData属性更加确切。
ViewData属性
以下是ASP.NET MVC 5 源代码中ControllerBase 类中 ViewData 属性的定义:
public ViewDataDictionary ViewData { get; set; }
ViewData本身是ViewDataDictionary 字典类型,而ViewDataDictionary类定义如下:
public class ViewDataDictionary : IDictionary<string, object>
ViewData示例
public ActionResult Index()
{
//控制器端代码
ViewData["text"] = "使用ViewData传递文本数据!";
return View();
}
//视图端代码展示
<h2>@ViewData["text"]</h2>
结果显示
ViewBag对象
不费那么多废话了想知道的可以去了解。直接演示操作
ViewBag示例
public ActionResult Index()
{
//控制器端代码
ViewBag.text = "使用ViewData传递文本数据!";
return View();
}
@*视图端代码展示*@
<h2>@ViewBag.text</h2>
TampData对象
TampData对象和ViewBag对象、ViewData对象的区别就是可以跨动作的传递数据
TampData示例
public ActionResult Index()
{
//控制器端代码
TempData["text"] = "使用TempData进行跨动作的文本数据传递!";
ViewBag.text = "使用ViewData传递文本数据!";
ViewData["text"] = "使用ViewData传递文本数据!";
return View();
}
我在Index视图写了一个超链接跳转到About视图
About视图代码
<h2>@ViewBag.text</h2>
<h2>@ViewData["text"]</h2>
<h2>@TempData["text"]</h2>
About视图展示
可以看出我在控制器用3种方式传递数据直有TampData对象显示出来了数据。