在MVC中前台Razor视图呈现数据的方式不止一种。举个简单的Demo,我们要把用户信息呈现给人民。
一.ViewData.Model的使用,先简单写一下Razor
@model User------用户信息模型
姓名<span>@Model.name</span>
年龄<span>@Model.age</span>
为了在页面呈现用户姓名和年龄资料,我这样写Action
public ActionResult User()
{
User user=new User();//实例用户信息模型,前提是定义好
user.name="张三";
user.age="18";
return View(user);//这里返回模型到Razor中
}
上面红色部分改为ViewData.Model=user;return View();也可以实现我们的目的。
这就是ViewData.Model的用法,它会把Model当做强类型数据传到Razor视图中。
二.再写写ViewData和ViewBag,我想给用户加两条信息,分别是性别和爱好。
在Action User()里添加代码
ViewData["sex"]="男";
ViewBag.love="apple";
在视图中添加代码
性别<span>@ViewData["sex"]</span>
爱好<span>@ViewBag.love</span>
ViewData与ViewBag的区别
ViewData | ViewBag | |
性能 | 快 | 慢 |
类型 | Key/Value的集合 | dynamic类型对像 |
类型转换 | 在前台页面时有些数据需转换(ex:分页集合) | 不需转换 |
三.还有一个TempData.它作用于Action()与Action()间的数据传递。ViewData也可以,不过只能在相同名字下的Action()传递数据。
我再定义一个名为Info()的Action,这时要想把上面User()中的用户任一信息传递到Info()中,就可以使用TempData了。
在User()中添加代码TempData["name"]=user.name;之后,在Info()中便可接收。
Public ActionResult Info()
{
var name=TempData["name"];
}
同样,ViewData,BiewBag和TempData之间也可以接受数据。