前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >控制器到视图的传值方式

控制器到视图的传值方式

作者头像
wfaceboss
发布2019-04-08 11:19:53
1.2K0
发布2019-04-08 11:19:53
举报
文章被收录于专栏:wfaceboss

一。从控制器到视图的传值方式

(1)Viewdata

代码语言:javascript
复制
C:Viewdata["key"]="viewdata"//控制器中赋值        V:Viewdata["key"]//视图中取值

(2)Viewbag

代码语言:javascript
复制
C:Viewbag.key="viewbag"//控制器中赋值   V:viewbag.key//视图中取值

(3)TempData        TempData实际上保存在Session中,控制器每次执行请求时都会从Session中获取TempData数据并删除该Session。TempData数据只能在控制器中传递一次,其中的每个元素也只能被访问一次,访问之后会被自动删除。

代码语言:javascript
复制
C:Tempdata["key"]="tempdata"//控制器中赋值  V:Tempdata["key"]//视图中取值

(4)Model :必须要有一个对象的实体类

代码语言:javascript
复制
ViewData.Model=查询出的对象 V:通过强类型页面  形式为:@model   从控制器中传来的具体类型(单个对象或者集合)

viewdata与viewbag区别:

(1)对于普通类型 传值方式一样

(2)对于强类型(对象)viewdata需要强制转换     

    第一种方式: 某对象 s=(命名空间+某对象)(viewdata["对象变量"])   

    第二种方式:  某对象 s=  viewdata["对象变量"] as  命名空间+某对象)   

Viewdata与Tempdata的区别:

(1)viewdata 传值时不能跨方法,否则值会丢失,只能是在本方法到本视图 , ViewData只能在一个Action方法中进行设置,在相关的视图页面读取,只对当前视图有效。

 (2)tempdata 可以跨方法取值不会丢失,TempData应该可以在一个Action中设置,多个页面读取。但是,实际上TempData中的元素被访问一次以后就会被删除。

强类型传值:通过对象传值(Model):必须要有一个对象的实体类

C中:返回一个对象(变量),return View(对象变量p);//p可能是单个对象也有可能是一个集合PL

V中:需要一个接受从C中传来的,与之对应的对象变量(一般为model)【可能是单个对象也有可能是集合】

例如:对于单个对象p:@model  mvc传值.Models.Student   此时model是 Student类型的一个对象  使用model就可以访问Student类

    是对于传过来的是一集合PL:   @model  List<mvc传值.Models.Student>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-04-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档