在我的页面标记中,我有以下div:
<div id="utteranceFilterSection" runat="server" enableviewstate="true">
<asp:Label ID="lblShowFilterPrompt" runat="server" Text="Show: "></asp:Label>
<asp:DropDownList ID="ddlDetailsFilter"
AutoPostBack="true"
runat="server"
OnSelectedIndexChanged="ddlDetailsFilter_SelectedIndexChanged">
<asp:ListItem Value="All">All</asp:ListItem>
<asp:ListItem Value="Pass">Passed</asp:ListItem>
<asp:ListItem Value="Fail">Failed</asp:ListItem>
<asp:ListItem Value="Blocked">Blocked</asp:ListItem>
</asp:DropDownList>
</div>
我想根据会话状态的内容显示或隐藏此div。在Page_Load中我有:
if (Page.IsPostBack)
{
//if (this.Session["ShowFilterControl"] != null)
//{
// this.utteranceFilterSection.Visible = true;
// this.Session.Remove("ShowFilterControl");
//}
this.utteranceFilterSection.Visible = true;
}
else
{
this.utteranceFilterSection.Visible = false;
}
如果我使用未注释的回发代码,设置可见工作正常,但是,如果我尝试使用注释掉的代码执行此操作,我会在调试器中看到代码,但div不会显示。我做错了什么?
答案 0 :(得分:0)
为什么不尝试设置bool并在if语句中与回发条件一起评估?像这样:
bool showFilter = (bool)this.Session["ShowFilterControl"];
if (Page.IsPostBack && showFilter)
{
this.Session["ShowFilterControl"] = false;
this.utteranceFilterSection.Visible = true;
}
else
{
this.utteranceFilterSection.Visible = false;
}