如何在MVC 3中的不同视图之间保留一些值?
我尝试使用TempData和HiddenField来保存这些值,但是在我们的托管中,这个tecnique似乎寿命很短,所以如果用户使用Back按钮,每次开始失败都会出现异常。
我想了解在MVC 3中保持视图之间值的更好方法,感谢您的建议!
答案 0 :(得分:3)
按照设计,MVC3 TempData值在使用后会被删除。
最简单的答案是直接在控制器中使用Session object。
还有其他相关问题,详细解答如下:
答案 1 :(得分:0)
您的问题是关于请求之间对象的生命周期。重要的是要理解Web应用程序是通过HTTP(S)协议使用的,这是一种无状态协议。这意味着每个请求都是对Web服务器的全新请求,并且请求之间没有共享状态。
然而,每次将用户的凭证发送到服务器都是愚蠢的,因此网络服务器可以创建他们称为会话(和会话状态)的东西。此对象是在当前用户的会话生命周期内保持可用的对象(大多数时间从登录到注销)。您可以使用此对象存储您希望通过同一用户的各种请求共享的项目。
如果您尝试保留的值特定于页面,则可以使用隐藏字段或类似内容。但是,如果数据与用户的关系比与特定页面的关系更密切,并且数据的生命周期必须长于单个请求,那么sessionstate是存储数据的最佳位置。
答案 2 :(得分:0)
您可以使用会话(正如您在标题和标签中提到的那样)。或者在用户的机器上存储cookie