基本上,我們對MasterPage中的.Visible = false存在的通知消息框有個「幻覺」。當談到時間在框中顯示的消息,我們運行,看起來像這樣的方法:使用JavaScript更改頁面狀態,舊狀態在回發中調用
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巫術,我們最終似乎是一個浮動消息框,因爲頁面的其餘部分顯示爲灰色。這個消息框有一個「關閉」按鈕來關閉「彈出」並恢復調光器,使該站點返回到「正常」視覺狀態。我們在母版的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()之前的方式「記住」這些div的狀態JavaScri pt被執行了。換句話說,在DisplayNotificationMessage()方法初始調用後的每次回發都會導致頁面返回到divmsgpanel.Visible = true和divdimmer.Visible = true,從而創建一個無限煩人的消息框,在每次回發時都會彈出錯誤消息框。
問題:
因爲我們想讓關閉功能保持客戶端JavaScript,我們怎麼能「通知」頁面停止恢復舊態上回發,只是這兩個div?
Omg,謝謝!這工作。哇,現在很痛苦。非常感謝。 – CptSupermrkt 2012-03-15 08:00:01