Asp Net MVC 3 - 通过动作和视图,SessionState

时间:2011-09-22 15:23:16

标签: asp.net-mvc asp.net-mvc-3 session session-state session-variables

如何在MVC 3中的不同视图之间保留一些值?

我尝试使用TempData和HiddenField来保存这些值,但是在我们的托管中,这个tecnique似乎寿命很短,所以如果用户使用Back按钮,每次开始失败都会出现异常。

我想了解在MVC 3中保持视图之间值的更好方法,感谢您的建议!

3 个答案:

答案 0 :(得分:3)

按照设计,MVC3 TempData值在使用后会被删除。

最简单的答案是直接在控制器中使用Session object

还有其他相关问题,详细解答如下:

Session variables in ASP.NET MVC

Asp.Net MVC and Session

答案 1 :(得分:0)

您的问题是关于请求之间对象的生命周期。重要的是要理解Web应用程序是通过HTTP(S)协议使用的,这是一种无状态协议。这意味着每个请求都是对Web服务器的全新请求,并且请求之间没有共享状态。

然而,每次将用户的凭证发送到服务器都是愚蠢的,因此网络服务器可以创建他们称为会话(和会话状态)的东西。此对象是在当前用户的会话生命周期内保持可用的对象(大多数时间从登录到注销)。您可以使用此对象存储您希望通过同一用户的各种请求共享的项目。

如果您尝试保留的值特定于页面,则可以使用隐藏字段或类似内容。但是,如果数据与用户的关系比与特定页面的关系更密切,并且数据的生命周期必须长于单个请求,那么sessionstate是存储数据的最佳位置。

答案 2 :(得分:0)

您可以使用会话(正如您在标题和标签中提到的那样)。或者在用户的机器上存储cookie