在C#中的Page OnInit/OnLoad上添加/删除会话变量

Man*_*ngh 2 c# asp.net session-variables

我正在使用C#.

我在C#中使用以下代码:

protected override void OnInit(EventArgs e)
{
    try
    {
        if (Session["boolSignOn"].ToString() == "true".ToString())              
        {              
            lblPanelOpen.Text = Session["panelOpen"].ToString();
        }
        else
        {
            lblPanelOpen.Text = Session["panelOpen"].ToString();
        }
    }
    catch (Exception ex)
    {
        Logger.Error("Error processing request:" + ex.Message);
    }
}
protected override void OnLoad(EventArgs e)
{
    try
    {
        if (!string.IsNullOrEmpty(Session["panelOpen"].ToString()))
        {
            lblPanelOpen.Text = string.Empty;
            Session.Remove("panelOpen");
        }
    }
    catch (Exception ex)
    {
        Logger.Error("Unable to remove the session variable:" + ex.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我有一个Session["panelOpen"]从另一个用户控件创建的变量,一旦我的页面尝试渲染,我将存储Session["panelOpen"]在我的隐藏lblPanelOpen.Text页面OnInit()方法中,但是当页面被完全加载时,我试图删除会话变量.

请指教!

She*_*Pro 5

好吧,我想我明白了.在您的第一个OnInit方法中,您只检查为boolSignOnnull或空,但不是panelOpen.

尝试这个intead:

 if (Session["boolSignOn"].ToString() == "true".ToString() && Session["panelOpen"] != null)   
Run Code Online (Sandbox Code Playgroud)

也改变你的其他部分.并将您的整个代码更改为:

这里更新是我试过的完整代码

 protected override void OnInit(EventArgs e)
{
    try
    {
        //Change your condition here
        if (Session["boolSignOn"].ToString() == "true".ToString() && Session["panelOpen"] != null)               
        {              
            lblPanelOpen.Text = Session["panelOpen"].ToString();
        }
        else
        {
            //Dont set text to panelOpen here
            lblPanelOpen.Text = string.Empty;
        }
    }
    catch (Exception ex)
    {
        Logger.Error("Error processing request:" + ex.Message);
    }
}

protected override void OnLoad(EventArgs e)
{
    try
    {
        if (!string.IsNullOrEmpty(Session["panelOpen"].ToString()))
        {
            // No need to set it here it will be set in next load in OnInit call 
            //lblPanelOpen.Text = string.Empty;
            Session.Remove("panelOpen");
        }
   }
   catch (Exception ex)
   {
       Logger.Error("Unable to remove the session variable:" + ex.Message);
   }
Run Code Online (Sandbox Code Playgroud)

}

我希望这可行.试试看