使用会话变量

时间:2013-09-08 04:30:08

标签: c# asp.net asp.net-mvc session-variables

我很清楚会话变量的定义。但是我遇到了会话的实际问题。 我有一个视图,我在使用viewData,这个viewdata从会话变量中分配了一个值。我将此会话变量放在控制器中。 在视图中我有

ViewData["MyView"] 

在控制器中

if(Session["MySession")!=null)
{
   ViewData["MyView"]=Session["MySession");
} 

上述控制器是每页的通用控制器。我的意思是从每个其他页面,控件被重定向到控制器上方。所以,在此之后,我还有其他三个控制器

控制器1 控制器2 Controller3

如果我从第一页单击RunReport,Control将转到Controller1并设置一个会话变量

like Session["MySession"]=1;

设置此会话后,控制器进入通用控制器设置ViewData [MyView],并且每次向该viewdata添加值都有不同的逻辑。

同样,当我点击第二页的Runreport时,控制权转到Controller2并设置一个会话变量

like  Session["MySession"]=1;

设置此Session后,控制器进入通用控制器设置ViewData [MyView],并且每次向该viewdata添加值都有不同的逻辑。我的意思是说ViewData每次都会有不同的值。

类似地,当我从第三页点击时,控制行为和外翻方式相同。

现在一切正常。但我的问题是我在每个不同的控制器中使用相同的会话变量。假设User1打开了page1并且他点击了runreport页面,当然这个会话变量现在将有一个值,并且在此控件之后将转到Common控制器并在视图数据中设置一个值。同时,如果另一个使用打开page2并且他点击了runreport,那么再次单击它将执行此过程,或者前一个会话已经有一个值,即使我点击了runreport。其实我完全糊涂了。请帮我。在实践层面深入介绍一些技术上的理解点,请明确我的观点。非常感谢你。

2 个答案:

答案 0 :(得分:2)

Session是每用户集合,即使它在HttpContext.Current.Session中看起来像静态。两个不同的用户将获得不同的Session对象,每个新用户将获得自己的空Session对象。

答案 1 :(得分:0)