所有的视图都可以访问弱类型的数据集合。
这个集合通过控制器和视图上的ViewData或者ViewBag来进行。
ViewBag其实是ViewData的一个包装器。
本质上ViewBag也是ViewData
ViewData通过键值对的方式来存储和检索数据对象。
当我们取得数据以后。需要我们自己对数据的类型进行转换。
下面我们来先试一下ViewData
比如我们把当前登录的用户的信息显示在页面上面。
控制器中给viewdata赋值
public IActionResult Index()
{
var currentUser = new UserInfo() { Name = "张三", Password = "122222" };
ViewData["currentuser"] = currentUser;
return View();
}Code language: PHP (php)
在视图中获取对象
@{
ViewData["Title"] = "Home Page";
var currentUser = ViewData["currentuser"] as UserInfo; //从viewdata取出 然后转换成对象
}
<h1>@currentUser.Name</h1>Code language: JavaScript (javascript)
还可以呈现基本数据类型
ViewData["Greeting"] = "你好吗";
<p>@ViewData["Greeting"]</p>Code language: JavaScript (javascript)
还可以在视图之间传递 比如在index.cshtml里面定义
ViewData["Title"] = "首页";Code language: JavaScript (javascript)
在布局里面使用
<title>@ViewData["Title"] - FirstCoreMVC</title>Code language: HTML, XML (xml)
本节代码
public IActionResult Index()
{
var currentUser = new UserInfo() { Name = "张三", Password = "122222" };
ViewData["currentuser"] = currentUser;
ViewData["Greeting"] = "你好吗";
ViewBag.CurrentTime = DateTime.Now.ToShortTimeString();
//ViewBag.12A = 12; 不符合命名规范
ViewBag.LiSi = new UserInfo() { Name = "李四", Password = "122222" };//还可以把李四放在viewbag里面 在视图中可以之间只用<h2>@ViewBag.LiSi.Name</h2>
return View();
}Code language: PHP (php)
@{
ViewData["Title"] = "首页";
var currentUser = ViewData["currentuser"] as UserInfo; //从viewdata取出 然后转换成对象
}
<h1>@currentUser.Name</h1>
<p>@ViewData["Greeting"]</p>
<p>@ViewData["CurrentTime"]</p>
<p>@ViewBag.CurrentTime</p>
<h2>@ViewBag.LiSi.Name</h2>Code language: HTML, XML (xml)
Previous: 18-控制器给视图传递数据
Next: 20-布局的应用