一个页面显示时 传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;这里为啥取不到?
}
肯定取不到,ViewBag是当前请求范围内有效,POST属于不同的请求了,你可以在第一个view里面用隐藏域方式保存在页面上,提二次再取出来
能不能写个示例代码 演示下 谢谢哥们
本来就应该取不到,每个请求会创建不同的Controller实例
那怎么能取到我之前给的Photo呢?或者换成其他方法也可以呢?因为Post提交时需要发邮件 需要把Photo加载进去
@Dellienware: 在发post请时将Photo的数据也带上
@dudu: 能不能写个示例代码 演示下 谢谢哥们
取值 方式不对
取不到,ViewBag只对当前请求有效。
你可以使用TempData进行存储:TempData["Photo "] = Photo
不过使用一次以后就会失效
把ViewBag的值用隐藏域存起来,post提交之后直接取就可以了。
post方法里,你的值应该从参数(模型)里面取,而不是在viewbag里取。viewbag只是控制器传给视图数值的一个工具。不能反过来用
一般的逻辑也不会这样用吧? 楼上也说了,可以用hidden ,TempData只能使用一次。
每次请求都是一个新的Controller实例,你可以使用初始化页面时候将ViewBag传入的值放到input表单中,在使用ajax方式,或者 表单提交就可以了
。围观。
ViewBag只对当前请求有效