MVC页面常见的三种传值方式
2021-05-03 17:26
标签:对象 font color list each 实现 ring hello wrap 前言 这三种方式用于Controller向View传值,一般情况下我们不会只传list,还会附带很多额外的零散的数据,这样通过model就无能为力了,这时候就会用到上文的三种对象 ViewData["listColors"] = colors; return View(); ViewBag.ListColors = colors; ViewBag.Name = "Celine"; ViewBag.Age = 24; 在查找资料的过程中发现ViewBag的一个公式,很有意思 2.ViewBag转换成ViewData ViewBag.Students = students; MVC页面常见的三种传值方式 标签:对象 font color list each 实现 ring hello wrap 原文地址:https://www.cnblogs.com/BoKeYuan259/p/12121145.html
最近在敲积分系统,发现有很多对象可以用来传值,今天就来总结一下常见的三种方式:ViewData、ViewBag和TempData
首先对比一下前两者——ViewData&ViewBag
Controller里边的代码(ViewData):
public ActionResult Index()
{
List
colors.Add("red");
colors.Add("green");
colors.Add("blue");
ViewData["dateNow"] = DateTime.Now;
ViewData["name"] = "Celine";
ViewData["age"] = 24;
}
页面(ViewData)
My name is @ViewData["name"] ,@ViewData["age"]years old.
I like the following colors:
@foreach (var color in ViewData["listColors"] as List
{
}
@ViewData["dateNow"]
Controller里边的代码(ViewBag):
List
colors.Add("red");
colors.Add("green");
colors.Add("blue");
ViewBag.dateNow = DateTime.Now;
页面(ViewBag)
My name is @ViewBag.Name, @ViewBag.Age years old.
I like the following colors:
@foreach (var color in ViewBag.ListColors)
{
}
@ViewBag.DateNow
ViewBag=ViewData+Dynamic wrapper around the ViewData
两者的对比
从上边的代码中我们也可以看出ViewData是字典集合,存放的是键值对,ViewBag在使用方法上和ViewData几乎一样,但是底层实现确实完全不同,ViewBag最大的有点就是他不需要转型就可以使用里面的值,但是ViewData就需要转换成合适的类型
public ActionResult Index()
{
ViewData["message"] = "Hello Word!";
return View();
}
string message = ViewData["message"] as string;
我们看表格也可以发现ViewBag存放的不是键值对,而是dynamic动态类型,就如上边的公式所说ViewBag就是封装了的ViewData,所以两者可以相互转换
1.ViewData转换成ViewBagFriend List
@foreach (var std in (List
{
@std
}
版权声明:本文为CSDN博主「Celine丹」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cd18333612683/article/details/70548855