基本上我们有一个通知消息框的“错觉”,在MasterPage中以.Visible = false存在。当需要在框中显示消息时,我们运行如下所示的方法:
public static void DisplayNotificationMessage(MasterPage master, string message)
{
if (Master.FindControl("divmsgpanel") != null)
{
master.FindControl("divmsgpanel").Visible = true;
}
if (master.FindControl("divdimmer") != null)
{
master.FindControl("divdimmer").Visible = true;
}
TextBox thetxtbox = (TextBox)master.FindControl("txtboxmsgcontents");
if (thetxtbox != null)
{
thetxtbox.Text = message;
}
}
基本上通过我们的设计师非常棒的CSS伏都教,我们最终会看到一个浮动的消息框,因为页面的其余部分显示为暗淡。此消息框有一个“关闭”按钮,用于关闭“弹出窗口”并恢复调光器,使站点返回“正常”视觉状态。我们使用MasterPage中的JavaScript完成此任务:
function HideMessage() {
document.getElementById("<%# divmsgpanel.ClientID %>").style.display = 'none';
document.getElementById("<%# divdimmer.ClientID %>").style.display = 'none';
return false;
}
并且.aspx页面中的按钮声明调用此HideMessage()函数OnClientClick:
<asp:Button ID="btnmsgcloser" runat="server" Text="Close" style="margin: 5px;"
OnClientClick="return HideMessage()" />
问题:
所有未来的回发都会导致MasterPage在执行HideMessage()JavaScript之前“记住”这些div的状态。换句话说,在DisplayNotificationMessage()方法的初始调用之后的每一个回发都会导致页面返回到divmsgpanel.Visible = true和divdimmer.Visible = true,从而创建一个无休止的烦人消息框,在每次回发时都会错误地弹出。
问题:
由于我们希望Close函数保留客户端JavaScript,我们怎样才能“通知”页面停止恢复到回发时的旧状态,仅仅这两个div?
答案 0 :(得分:2)
您可以尝试在Master_Page Load事件中将它们设置为Visible = false吗?它应该隐藏它们并在调用DisplayNotificationMessage
时重新显示它们