首页 新闻 会员 周边 捐助

MVC中有什么办法可以将数据传递到另一个页面?

0
[已解决问题] 解决于 2017-04-19 14:49

比如说我从一个页面查询出GeoNo字段值,我要将这个字段信息传递到另一个页面应该如何写?

你猜丶的主页 你猜丶 | 初学一级 | 园豆:135
提问于:2017-04-12 09:53
< >
分享
最佳答案
0

ViewData对应的action传递到view中;

TempData可用于在通一个controller中不同的Action之间传值,这是ViewData做不到的;

Session可以跨controller传递值

奖励园豆:5
悟行 | 专家六级 |园豆:12559 | 2017-04-12 09:57

我用TempData在本页面可以获取到值,但是在另一个页面上就为空,不知道为啥

你猜丶 | 园豆:135 (初学一级) | 2017-04-12 09:59

@你猜丶: TempData中存放的数据只一次访问中有效,一次访问完后就会删除了的。这个一次访问指的是一个请求到下一个请求,因为在下一个请求到来之后,会从Session中取出保存在里面的TempData数据并赋值给TempData,然后将数据从Session中删除。

悟行 | 园豆:12559 (专家六级) | 2017-04-12 10:02

@你猜丶: 你访问第二次TempData就不会有值了,只能第一次有值

悟行 | 园豆:12559 (专家六级) | 2017-04-12 10:02

@ArnoldZhang: 后来我把本页面的删掉了,但是依然没用,获取到的还是为空。只有这一种,没别的方法吗?

你猜丶 | 园豆:135 (初学一级) | 2017-04-12 10:09

@你猜丶: 用session

悟行 | 园豆:12559 (专家六级) | 2017-04-12 10:24

@ArnoldZhang: 不能用session,用session会报错不知道为什么。

你猜丶 | 园豆:135 (初学一级) | 2017-04-12 10:29

@你猜丶: 不是,在controller层就可以了;

悟行 | 园豆:12559 (专家六级) | 2017-04-12 10:38
其他回答(3)
0

可以看看viewData,或者看你是什么场景session等之类都可以

Jeffcky | 园豆:2789 (老鸟四级) | 2017-04-12 09:58
0

打个例子把,在Controller用Session保存值

然后................

 

好长时间没接触MVC了。。。

MRGan | 园豆:71 (初学一级) | 2017-04-12 10:40

这还是大二做的项目.....

支持(0) 反对(0) MRGan | 园豆:71 (初学一级) | 2017-04-12 10:43

@MRGan: 我后台   : Session["GeoNo"] = "123";

前台:  var GeoNo = "@Session["GeoNo"]";

          alert(GeoNo);

然后获取到的值为空白,但如果加上ToString()的话 var GeoNo = "@Session["GeoNo"].ToString()",他又直接报获取数据错误;

在HTML<p>标签中,我是看到有获取到数据的

支持(0) 反对(0) 你猜丶 | 园豆:135 (初学一级) | 2017-04-12 11:04

@你猜丶: 为什么要加""引号

支持(0) 反对(0) MRGan | 园豆:71 (初学一级) | 2017-04-12 11:06

@你猜丶: 把引号去了var GeoNo = @Session["GeoNo"].Tostring();再打断点看

支持(0) 反对(0) MRGan | 园豆:71 (初学一级) | 2017-04-12 11:07

@MRGan: 因为是在function(){}中啊,不加引号就会报语法错误

支持(0) 反对(0) 你猜丶 | 园豆:135 (初学一级) | 2017-04-12 11:07

@你猜丶: 你加了引号就表示GeoNo = @Session["GeoNo"]。。而不是等于123了。之所以报错你还整整自己的逻辑

支持(0) 反对(0) MRGan | 园豆:71 (初学一级) | 2017-04-12 11:14

@MRGan: 不是啊,加了@就是代码形式。

支持(0) 反对(0) 你猜丶 | 园豆:135 (初学一级) | 2017-04-12 11:23

@MRGan: var GeoNo = @Session["GeoNo"].Tostring();  会直接报语法错误。

var GeoNo = “@Session["GeoNo)”;  显示为空

var GeoNo = “@Session["GeoNo)"].Tostring()”;  可以运行但到这一步时提示获取数据错误

var GeoNo = Session["GeoNo)"].Tostring();会报Session未定义

支持(0) 反对(0) 你猜丶 | 园豆:135 (初学一级) | 2017-04-12 11:26

@你猜丶: JavaScript吗?

支持(0) 反对(0) MRGan | 园豆:71 (初学一级) | 2017-04-12 11:34

@MRGan: 嗯啊

支持(0) 反对(0) 你猜丶 | 园豆:135 (初学一级) | 2017-04-12 11:35

@你猜丶: 一定要用JavaScript?直接在前台页面<p>@Session["GeoNo"].Tostring()</p>.不行吗。很少用MVC,现在做Winform。没能帮太多,可以多自己百度,问问身边的同事

支持(0) 反对(0) MRGan | 园豆:71 (初学一级) | 2017-04-12 11:38
0

再来重复一遍:没有页面间传值这个概念.

这个词本身就是一些半桶水发明出来误人子弟的!

web是请求响应模型.也就是说所有的web都是一个请求然后一个响应.你要做的是在请求中加入参数.

然后在请求处理中判断参数.来决定返回什么

吴瑞祥 | 园豆:29449 (高人七级) | 2017-04-12 10:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册