数据呈现到 ASP.NET Core MVC 中展示
终于要将数据呈现到 ASP.NET Core MVC 中的 视图 上了
将数据从控制器传递到视图的三种方法
在 ASP.NET Core MVC 中,有 3 种方法可以将数据从控制器传递到视图:
- 使用 ViewData
- 使用 ViewBag
- 使用强类型模型对象。这也称为强类型视图。
通过使用ViewData或ViewBag传递数据,我们会创建一个弱类型的视图。我们待会儿讨论弱类型视图的含义。
使用 ViewData 将数据从 Controller 传递到视图
我们希望将HomeController的 Details()操作方法中的Student模型数据和视图页面的 Title 传递给 Details.cshtml 视图。因此,修改 HomeController 中的 Details()操作方法,如下所示。
public ViewResult Details()
{
Student model = _studentRepository.GetStudent(1);
// 使用ViewData将PageTitle和Student模型传递给View
ViewData["PageTitle"] = "Student Details";
ViewData["Student"] = model;
return View();
}
在视图中访问 ViewData
要将 HomeController 的 Details()操作方法中的 ViewData 传递到视图,请修改 Details.cshtml 文件中的代码,如下所示。
@using StudentManagement.Model
<html>
<head>
<title></title>
</head>
<body>
<h3>@ViewData["PageTitle"]</h3>
@{ var student = ViewData["Student"] as Student; }
<div>
姓名 : @student.Name
</div>
<div>
邮箱 : @student.Email
</div>
<div>
班级名称 : @student.ClassName
</div>
</body>
</html>
ViewData
- ViewData 是弱类型的字典(dictionary )对象。
- 我们使用 string 类型的键值,来存储和查询 ViewData 字典中的数据,。
- 可以从 ViewData 字典直接访问数据,而无需将数据转换为 string 类型。
- 如果我们访问的是任何其他类型的数据,我们需要将其显式地转换为我们期望的类型。
- 在我们的例子中,我们声明Student对象的学生,分别访问Student对象的 Name,Email 和 ClassName 属性。
- ViewData 在运行时会进行动态解析,因此它不提供编译时类型检查,因此我们不会获得智能提示。
- 由于我们没有智能感知,因此编写代码的速度降低,错误拼写和打错的可能性也很高。
- 我们只会在运行时才知道这些错误。
- 出于这个原因,我们通常不使用 ViewData。
- 当我们使用 ViewData 时,我们最终会创建一个弱类型的视图。
欢迎添加个人微信号:Like若所思。
欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!

数据呈现到 ASP.NET Core MVC 中展示的更多相关文章
- ASP.NET Core MVC中Controller的Action如何直接使用Response.Body的Stream流输出数据
在ASP.NET Core MVC中,我们有时候需要在Controller的Action中直接输出数据到Response.Body这个Stream流中,例如如果我们要输出一个很大的文件到客户端浏览器让 ...
- 007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】
Adding a view to an ASP.NET Core MVC app 在asp.net core mvc中添加视图 2017-3-4 7 分钟阅读时长 本文内容 1.Changing vi ...
- 006.Adding a controller to a ASP.NET Core MVC app with Visual Studio -- 【在asp.net core mvc 中添加一个控制器】
Adding a controller to a ASP.NET Core MVC app with Visual Studio 在asp.net core mvc 中添加一个控制器 2017-2-2 ...
- 008.Adding a model to an ASP.NET Core MVC app --【在 asp.net core mvc 中添加一个model (模型)】
Adding a model to an ASP.NET Core MVC app在 asp.net core mvc 中添加一个model (模型)2017-3-30 8 分钟阅读时长 本文内容1. ...
- ASP.NET Core MVC中的 [Required]与[BindRequired]
在开发ASP.NET Core MVC应用程序时,需要对控制器中的模型校验数据有效性,元数据注释(Data Annotations)是一个完美的解决方案. 元数据注释最典型例子是确保API的调用者提供 ...
- ASP.NET Core MVC中URL和数据模型的匹配
Http GET方法 首先我们来看看GET方法的Http请求,URL参数和ASP.NET Core MVC中Controller的Action方法参数匹配情况. 我定义一个UserController ...
- ASP.NET Core MVC中的IActionFilter.OnActionExecuted方法执行时,Controller中Action返回的对象是否已经输出到Http Response中
我们在ASP.NET Core MVC项目中有如下HomeController: using Microsoft.AspNetCore.Mvc; namespace AspNetCoreActionF ...
- ASP.NET Core MVC 中自定义视图
ASP.NET Core MVC 中的视图发现 ASP.NET Core MVC 中有提供了几个 View()的重载方法. 如果我们使用下面提供 View()的重载方法,它将查找与 Action 方法 ...
- ASP.NET Core MVC 中的 Model 模型
ASP.NET Core MVC 中的 Model 我们希望最终从 Student 数据库表中查询特定的学生详细信息并显示在网页上,如下所示. MVC 中的模型包含一组表示数据的类和管理该数据的逻辑. ...
随机推荐
- jQuery 源码解析(八) 异步队列模块 Callbacks 回调函数详解
异步队列用于实现异步任务和回调函数的解耦,为ajax模块.队列模块.ready事件提供基础功能,包含三个部分:Query.Callbacks(flags).jQuery.Deferred(funct) ...
- Vue.js 源码分析(二十八) 高级应用 transition组件 详解
transition组件可以给任何元素和组件添加进入/离开过渡,但只能给单个组件实行过渡效果(多个元素可以用transition-group组件,下一节再讲),调用该内置组件时,可以传入如下特性: n ...
- CompletableFuture3
public class CompletableFuture3 { public static void main(String[] args) throws ExecutionException, ...
- C#动态创建单例类的对象
单例类 public class SnappingClass : ISnappingEnvironment, IExtension { // private static readonly Snapp ...
- Log4Net记录日志(mvc)
转自:http://blog.csdn.net/zhoufoxcn/article/details/2220533 感谢:柄棋先生 第一步:下载Log4Net 下载地址:http://logging. ...
- Unable to connect to web server 'IIS Express'(无法连接到Web服务器“IIS Express”)的解决方式-Jexus Manager
在运行微软示例工程eShopOnWeb时候, 在经过一段时间再运行启动报Error "Unable to connect to web server 'IIS Express'" ...
- python 跟踪IP模块
#coding=utf-8 import re import subprocess def tracertIP(ip): p = subprocess.Popen(['tracert',ip],std ...
- jenkins19年最新最管用的汉化
今天准备学学jenkins ,官方下载了一个最新版本,发现是英文版,网上找个许多汉化方式,几乎都是一种,下载插件 :Locale plugin ....很尴尬,下载完了还是没有汉化 ,是不是jenki ...
- Java操作zip-压缩和解压文件
一.说明 rar格式的压缩包收费,java支持zip格式的压缩和解压 二.工具类 import java.io.*; import java.util.Enumeration; import java ...
- Eureka服务下线源码解析
我们知道,在Eureka中,可以使用如下方法使Eureka主动下线,那么本篇文章就来分析一下子这个下线的流程 public synchronized void shutdown() { if (isS ...