19-弱类型数据的传递

所有的视图都可以访问弱类型的数据集合。

这个集合通过控制器和视图上的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)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注