ViewData对应的action传递到view中;
TempData可用于在通一个controller中不同的Action之间传值,这是ViewData做不到的;
Session可以跨controller传递值
我用TempData在本页面可以获取到值,但是在另一个页面上就为空,不知道为啥
@你猜丶: TempData中存放的数据只一次访问中有效,一次访问完后就会删除了的。这个一次访问指的是一个请求到下一个请求,因为在下一个请求到来之后,会从Session中取出保存在里面的TempData数据并赋值给TempData,然后将数据从Session中删除。
@你猜丶: 你访问第二次TempData就不会有值了,只能第一次有值
@ArnoldZhang: 后来我把本页面的删掉了,但是依然没用,获取到的还是为空。只有这一种,没别的方法吗?
@你猜丶: 用session
@ArnoldZhang: 不能用session,用session会报错不知道为什么。
@你猜丶: 不是,在controller层就可以了;
可以看看viewData,或者看你是什么场景session等之类都可以
打个例子把,在Controller用Session保存值
然后................
好长时间没接触MVC了。。。
这还是大二做的项目.....
@MRGan: 我后台 : Session["GeoNo"] = "123";
前台: var GeoNo = "@Session["GeoNo"]";
alert(GeoNo);
然后获取到的值为空白,但如果加上ToString()的话 var GeoNo = "@Session["GeoNo"].ToString()",他又直接报获取数据错误;
在HTML<p>标签中,我是看到有获取到数据的
@你猜丶: 为什么要加""引号
@你猜丶: 把引号去了var GeoNo = @Session["GeoNo"].Tostring();再打断点看
@MRGan: 因为是在function(){}中啊,不加引号就会报语法错误
@你猜丶: 你加了引号就表示GeoNo = @Session["GeoNo"]。。而不是等于123了。之所以报错你还整整自己的逻辑
@MRGan: 不是啊,加了@就是代码形式。
@MRGan: var GeoNo = @Session["GeoNo"].Tostring(); 会直接报语法错误。
var GeoNo = “@Session["GeoNo)”; 显示为空
var GeoNo = “@Session["GeoNo)"].Tostring()”; 可以运行但到这一步时提示获取数据错误
var GeoNo = Session["GeoNo)"].Tostring();会报Session未定义
@你猜丶: JavaScript吗?
@MRGan: 嗯啊
@你猜丶: 一定要用JavaScript?直接在前台页面<p>@Session["GeoNo"].Tostring()</p>.不行吗。很少用MVC,现在做Winform。没能帮太多,可以多自己百度,问问身边的同事
再来重复一遍:没有页面间传值这个概念.
这个词本身就是一些半桶水发明出来误人子弟的!
web是请求响应模型.也就是说所有的web都是一个请求然后一个响应.你要做的是在请求中加入参数.
然后在请求处理中判断参数.来决定返回什么