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()方法中,但是当页面被完全加载时,我试图删除会话变量.
请指教!
好吧,我想我明白了.在您的第一个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)
}
我希望这可行.试试看
| 归档时间: |
|
| 查看次数: |
14838 次 |
| 最近记录: |