数据传递

控制器传值到视图的三种方式

ViewData: 保存数据 ,不可以跨页面传递数据
eg:在控制器中声明,Viewdtata[“name”]=“Tom”, 在视图中调用:@Viewdtata[“name”]。运行程序

ViewBag: 保存数据 ,不可以跨页面传递数据
eg:在控制器中声明,ViewBag.name=“Tom”, 在视图中调用:@ViewBag.name。运行程序

ViewBag和ViewData不能跨Action()方法传递数据。

TempData: 保存数据 ,可以跨页面传递数据
eg:在控制器中声明,TempData[“name”]=“Tom”, 在视图中调用:@TempData[“name”]。运行程序
TempData: 跨页面传递的数据是一次性的,在每次调用结束后,数据就会被清除。

视图传值到控制器

Request:从视图传值到后台最原始的方式
eg:
在这里插入图片描述
在这里插入图片描述

1.简述ViewData ViewBag 和TempData的区别。

ViewData仅在当前控制器的操作方法中有效,其生命周期和视图相同。ViewBag是dynamic的动态类型,e在程序运行时动态解析,读取数据时无须类型转换。TempData 数据默认保存于Session中,最多只能经过一文Controller控制器的传递,且每个元素最多只能被访问一次, 访问后被自动删除。

2. ViewData、ViewBag 如何传递Model数据?

(1)连接数据库查询返回Model对象数据。

(2)将Model数据或数据集合直接保存在ViewData或ViewBag中。

(3)在页面上通过@foreach循环访问模型集合数据,比如@foreach(var item in ViewData’users’] as List<Chapter2 .Models.Users>)表示,ViewData中存放了键为users的集合,集合中存放的是模型类Users对象。

3.视图传递数据到控制器,最原始的方式是什么?简述如何传递和接收数据。

(1)使用Request对象。

(2)在视图上编写表单及表单元素,在提交处理的控制器中使用Requestl"表单元素name属性值”]获取值。

猜你喜欢

转载自blog.csdn.net/weixin_46085790/article/details/106315993