为什么我的会话变量在主页上在网页上声明为空?

时间:2014-03-25 02:37:13

标签: c# asp.net master-pages session-variables

我在主页加载中声明:

Session["sessionString"] = "stringX";

在我的网页上也加载了,我称之为

string sessionString= (string)Session["sessionString"];

我调试和网页中的值是“”出了什么问题?

3 个答案:

答案 0 :(得分:3)

内容页面的Page_Load事件在主页的Page_Load事件之前被称为(请参阅此SO answerMSDN article) 。因此,当你打电话

string sessionString= (string)Session["sessionString"];

在您的网页中,Session["sessionString"]尚未包含任何值,默认为空字符串。

作为解决方法,您可以在母版页的Session["sessionString"]Init事件中设置PreLoad的值。

答案 1 :(得分:0)

JW Lim是正确的......内容页面的加载事件将在加载主页面之前触发。

@ user3445314,您可以在Global.asax中使用“Session_Start”事件,并设置与您在母版页中设置的值相同的值。

首先触发“Session_Start”事件,然后发生内容页面加载事件。

我希望这可以解决你的问题

答案 2 :(得分:0)

在Master PreRender中声明会话

protected override void OnPreRender(EventArgs e)
{
   Session["sessionString"] = "stringX";
}

通过ContetPage OnUnload事件获取它

protected override void OnUnload(EventArgs e)
{
   string sessionString= (string)Session["sessionString"];
}