我们使用mvc4开发Web应用程序。在许多情况下,我们将从First Page / View中的用户获得价值,我们需要保留一些变量,直到用户到达最终页面/视图。他/她可以通过4-5个视图从第一个视图到达最终视图。
保持MVC中的值。我们有三种方式。
1。全局变量 - 但是如果我在一个动作方法中赋值。该值将在另一个操作方法中重置。所以我们放弃了它。
2.Session - 但我们需要在每个会话中保留5个以上的值。所以我们放弃了它。
3.Static Varibale - 这就像魅力一样。但是在多用户中它导致了并发问题。
mvc中还有其他方法可以保持价值吗?请指导我。
答案 0 :(得分:5)
静态变量将在应用程序域的生命周期中持续存在,这就是您看到多个用户的并发问题的原因。
请参阅:Static Variables and their implications in ASP.Net websites
在会话中存储五个值应该没有任何问题。您可以拥有List<T>
并将其存储在会话中。像:
List<string> someValues = new List<string> {"A","B","C","D", "E",};
HttpContext.Current.Session["userValues"] = someValues;
要检索它:
var someValues = HttpContext.Current.Session["userValues"] as List<string>;
if(someValues != null)
{
// found
}
您唯一应该考虑的是数据的大小。会话存储在服务器级别为每个用户,存储太多数据可能会导致问题,但这取决于您的配置。