c# - 在 C# 中的页面 OnInit/OnLoad 上添加/删除 session 变量

标签 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);
    }
}

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

请推荐!

最佳答案

好的,我想我明白了。在您的第一个方法 OnInit 中,您只检查 boolSignOn 是否为 null 或为空,但不检查 panelOpen

试试这个:

 if (Session["boolSignOn"].ToString() == "true".ToString() && Session["panelOpen"] != null)   

同时更改您的其他部分。 并将您的整个代码更改为:

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

 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);
   }

我希望这能奏效。试一试

关于c# - 在 C# 中的页面 OnInit/OnLoad 上添加/删除 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4704449/

相关文章:

c# - 如何使用 session 变量asp.net c#

c# - 无法显示 VS 2012 设计器

asp.net - Thread.CurrentPrincipal 未在使用 WebGet 调用的 WCF 服务中设置

asp.net - log4net 在 IIS7 上部署时不会创建日志文件

ajax - Grails Spring Security - session 超时后重新登录时重新加载 session 变量

asp.net - 如何通过 SessionID 在没有 HttpContext.Current 的情况下获取 session 数据

c# - 将控制台行写入文件

c# - 反序列化子对象中具有不同类型的 JSON 对象

c# - 如何对依赖 NSNotificationCenter(在 MonoTouch 中)的类进行单元/集成测试?

c# - Entity Framework —— View 与表