我正在使用 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/