当前位置: 首页 > news >正文

ASP.NET Core----基础学习05----将数据传递给视图文件的五种情况

文章目录

      • 1. 类型一:使用ViewData将数据传递给视图文件(默认视图文件)
      • 2. 类型二:自定义选择视图文件 并传递ViewData数据
      • 3. 类型三:使用ViewBag将数据传递给视图文件
      • 4. 类型四:在视图文件中使用@model转化为强数据类型
      • 5. 类型五:使用视图模型,将某视图文件需要的所有数据归纳到一个数据模型中

1. 类型一:使用ViewData将数据传递给视图文件(默认视图文件)

step1: 创建Views/Home 文件夹 ,并创建Privacy.cshtml 文件,内容如下

在这里插入图片描述

# Privacy.cshtml@using ASP.Net_Blank.Models;@{// 此处使用 as 是方便最终调用@stu的时候与Student类关联,最终方便读取到属性Name、ClassName等。var stu = ViewData["Student"] as Student;
}<!DOCTYPE html><html><head><title>@ViewData["PageTitle"]</title></head><body><div>@stu.Name</div><div>@stu.ClassName</div><h3>this is from Views/Home/Privacy.cshtml</h3></body></html>

step2: HomeController.cs 的函数如下:
在这里插入图片描述


step3: 最终显示效果如下:
在这里插入图片描述


2. 类型二:自定义选择视图文件 并传递ViewData数据

step1:参照如上步骤,创建文件夹MyViews/Home ,并创建文件Privacy.cshtml

在这里插入图片描述

@*Privacy.cshtml文件*@
@* 方式二:使用ViewData将数据传递给视图: *@@using ASP.Net_Blank.Models;<html xmlns="http://www.w3.org/1999/xhtml"><head><title>@ViewData["PageTitle"]</title></head><body>@{var student = ViewData["Student"] as Student;}<div>姓名: @student.Name</div><div>ID : @student.Id</div><div>班级: @student.ClassName</div><h3>This is from MyViews/Home/Privacy.cshtml</h3></body>
</html>

step2: Privacy函数,只需要在View中指定具体哪个视图文件即可

在这里插入图片描述


step3: 最终显示效果如下:
在这里插入图片描述


3. 类型三:使用ViewBag将数据传递给视图文件

step1:Privacy方法中的内容

  • 此处貌似不能使用自定义的视图函数,且没传递model数据,直接在视图文件中读取@ViewBag即可

在这里插入图片描述


step2:Privacy.cshtml 文件内容
在这里插入图片描述


step3: 最终显示效果如下:

在这里插入图片描述


4. 类型四:在视图文件中使用@model转化为强数据类型


step1: 在controller中的设置:
在这里插入图片描述


step2: 视图文件中的设置:

  • 注意: 此处引用的时候使用了@model ASP.Net_Blank.Models.Student , 而页面中使用的是大写的@Model
  • 此处cshtml文件中,可自动识别Student的属性

在这里插入图片描述

自动识别Student的属性:
在这里插入图片描述


step3: 最终显示效果:
在这里插入图片描述


5. 类型五:使用视图模型,将某视图文件需要的所有数据归纳到一个数据模型中


step1: 创建文件夹ViewModels 以及文件HomeDetailsViewModel.cs

在这里插入图片描述

在这里插入图片描述


step2: HomeController.cs文件中的设置
在这里插入图片描述


step3: 视图文件中的设置
在这里插入图片描述


step4: 最终显示效果
在这里插入图片描述

http://www.lryc.cn/news/399851.html

相关文章:

  • Flutter实现局部刷新的几种方式
  • 力扣题解(回文子串)
  • 对数的基本概念
  • C双指针滑动窗口算法
  • WPF学习(6) -- WPF命令和通知
  • 升级到LVGL9的一些变化(后续发现再补充)
  • 当在多线程环境中使用 C++进行编程时,怎样确保线程安全以及如何处理线程之间的同步和通信?
  • 博物馆地图导航系统:高精度地图引擎与AR/VR融合,实现博物馆数字化转型
  • liunx作业笔记1
  • 大话C语言:第31篇 指针和数组的关系
  • Mysql-索引应用
  • Facebook 开源计算机视觉 (CV) 和 增强现实 (AR) 框架 Ocean
  • 【接口自动化_13课_接口自动化总结】
  • 安防管理平台LntonCVS视频汇聚融合云平台智慧火电厂安全生产管理应用方案
  • 【Web性能优化】在Vue项目中使用defer优化白屏,秒加载!
  • springboot上传图片
  • python入门:python及PyCharm安装
  • 链接追踪系列-04.linux服务器docker安装elk
  • 深入探讨微服务架构设计模式与常见实践
  • 【java】合并数组的两种方法
  • [图解]分析模式-01-概述1
  • 【网络安全】Oracle:SSRF获取元数据
  • Android Bitmap
  • 2024 年全国青少年信息素养大赛 Python 小学组复赛真题
  • C语言——流程控制:if...else、switch...case
  • 小白的OS Copilot 产品测评
  • 使用Scikit-Learn决策树:分类问题解决方案指南
  • E12.【C语言】练习:求两个数的最大公约数
  • Elasticsearch:介绍 retrievers - 搜索一切事物
  • 全面升级的对象创建——抽象工厂模式(Python实现和JAVA实现)