我很清楚会话变量的定义。但是我遇到了会话的实际问题。 我有一个视图,我在使用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。其实我完全糊涂了。请帮我。在实践层面深入介绍一些技术上的理解点,请明确我的观点。非常感谢你。
答案 0 :(得分:2)
Session
是每用户集合,即使它在HttpContext.Current.Session
中看起来像静态。两个不同的用户将获得不同的Session
对象,每个新用户将获得自己的空Session
对象。
答案 1 :(得分:0)