我看到很多关于何时使用ViewBag / ViewData VS viewmodel的帖子,但我没有能够找到ViewBag的生命周期的解释。
例如,我有一个控制器中有两个Action方法:
// POST: /MyModel/Edit/5 [HttpPost] public ActionResult Edit(MyModel _mymodel){}
和
// GET: /MyModel/Edit/5 public ActionResult Edit(int id){}
如果我在GET操作方法的ViewBag中设置一些值,以设置一些表单标签,那么当他们用户单击“提交”按钮,并且表单通过HTTP POST发布回服务器时,ViewBag值不再在POST操作方法。
有人可以解释(或提供参考好的文章)ViewBag / ViewData的生命周期?
解决方法
您放入ViewBag / ViewData中的数据仅在您填充它的请求的生命周期内可用。 MVC没有后备。如果你需要一些东西来坚持超过单个请求,你应该使用Session。
这里有一篇关于ViewData,ViewBag和TempData之间的区别的文章:http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications