首页新闻找找看学习计划

Post提交时为啥取不到当前页面的Viewbag啊

0
悬赏园豆:5 [已解决问题] 解决于 2014-12-29 10:37

一个页面显示时   传viewbag.photo变量 到UI显示,

然后post提交 在后台的 post对应的方法里 为啥取不到viewbag.photo变量了呢?

不是说viewbag生命周期是当前页面吗 post执行以后 才会跳到下一个页面啊

执行时 不是还属当前页面吧?为啥取不到啊?

 

[HttpGet]
public ActionResult Index(PropertyConfirmationModel model)
{

Viewbag.Photo =new Photo();

}

[HttpPost]
public ActionResult Index(PropertyConfirmationModel model)
{

Photo photo=Viewbag.Photo;这里为啥取不到?

}

Dellienware的主页 Dellienware | 初学一级 | 园豆:39
提问于:2014-08-14 18:07
< >
分享
最佳答案
1

肯定取不到,ViewBag是当前请求范围内有效,POST属于不同的请求了,你可以在第一个view里面用隐藏域方式保存在页面上,提二次再取出来

收获园豆:5
逍遥的雨 | 菜鸟二级 |园豆:216 | 2014-08-14 19:43

 能不能写个示例代码 演示下 谢谢哥们

Dellienware | 园豆:39 (初学一级) | 2014-08-19 15:03
其他回答(9)
0

本来就应该取不到,每个请求会创建不同的Controller实例

dudu | 园豆:40773 (高人七级) | 2014-08-14 18:12

那怎么能取到我之前给的Photo呢?或者换成其他方法也可以呢?因为Post提交时需要发邮件 需要把Photo加载进去

支持(0) 反对(0) Dellienware | 园豆:39 (初学一级) | 2014-08-14 18:20

@Dellienware: 在发post请时将Photo的数据也带上

支持(0) 反对(0) dudu | 园豆:40773 (高人七级) | 2014-08-14 20:22

@dudu: 能不能写个示例代码 演示下 谢谢哥们

支持(0) 反对(0) Dellienware | 园豆:39 (初学一级) | 2014-08-14 22:36
0

取值 方式不对

望着天的蜗牛 | 园豆:315 (菜鸟二级) | 2014-08-14 20:42
1

取不到,ViewBag只对当前请求有效。 

你可以使用TempData进行存储:TempData["Photo "] = Photo 

不过使用一次以后就会失效

kuangkro | 园豆:241 (菜鸟二级) | 2014-08-15 15:06
0

把ViewBag的值用隐藏域存起来,post提交之后直接取就可以了。

晓菜鸟 | 园豆:2564 (老鸟四级) | 2014-08-18 09:01
0

post方法里,你的值应该从参数(模型)里面取,而不是在viewbag里取。viewbag只是控制器传给视图数值的一个工具。不能反过来用

Cherbim | 园豆:318 (菜鸟二级) | 2014-08-28 11:16
0

一般的逻辑也不会这样用吧? 楼上也说了,可以用hidden ,TempData只能使用一次。

I-Can | 园豆:121 (初学一级) | 2014-08-29 15:51
0

每次请求都是一个新的Controller实例,你可以使用初始化页面时候将ViewBag传入的值放到input表单中,在使用ajax方式,或者 表单提交就可以了

Halower | 园豆:1723 (小虾三级) | 2014-09-08 09:21
0

。围观。

贫民窟大侠 | 园豆:4270 (老鸟四级) | 2014-09-10 18:03
0

ViewBag只对当前请求有效

我是糖糖 | 园豆:446 (菜鸟二级) | 2014-10-22 12:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册