Jas*_*nny 8 .net asp.net-mvc wizard
我正在构建一个MVC应用程序.我的任务之一是建立一个商店.我设置了一个像向导一样的"向导",它使用户可以在操作结束前填写不同类型的数据,总共7个步骤.
我的问题是如何在所有这些视图之间共享一些数据.
首先,我使用了老式的Session,一切都在我的桌面上工作,但当我最终将我的应用程序部署到我公司的托管服务器时,我得到了例外,因为Session在某些步骤中随机删除了.
现在我修改了所有内容以设置我需要的任何数据TempData,并刷新每个步骤中的所有数据,它似乎正常工作.
我有点困惑!
我的困惑在于所有这些结构:Session(我知道它来自asp.net)ViewData,TempData以及魔术ViewBag.
我读了很多,但我需要有人清楚地告诉我在这种情况下什么更适合我.
我想说 ViewBag 非常适合这样的事情。现在,您将 ViewBag 称为“Magic” viewbag,但实际上它只是包装了 ViewData,ViewData 是一个字典 <string,object>
ViewBag 的工作方式是,它只是 ViewData 的动态包装器,因此当您请求某些内容(例如 ViewBag.ShoppingCart)时,它基本上会询问底层字典是否有名为“ShoppingCart”的条目,然后返回该项目。
更新问题是我不记得 ViewBag 和 ViewData 是特定于视图的,因此每当您点击不同的视图/操作时它们都会被清空。
除非您需要将 ShoppingCart (或向导进度)存储在数据库中,否则我会在您的情况下使用ViewBag TempData :)
您还可以阅读 Rachel Apple 的这篇文章,了解有关这三者的更多信息:
http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications
(另外,我建议您也阅读该帖子的评论,以获得一些更公正的意见)
| 归档时间: |
|
| 查看次数: |
7278 次 |
| 最近记录: |