Я использую кнопку ссылки, которая позволяет пользователю обновить страницу. Кнопка ссылки хранится внутри панели обновления с таймером. Функция таймера состоит в том, чтобы проверить, регулярно ли кто-то обновлял базу данных. Если обнаруживается обновление, кнопка ссылки изменяется на видимую, и пользователь может выбрать «просмотреть обновления».
Источник для панели обновления:
<asp:UpdatePanel ID="UpdatePanelDraftUpdate" runat="server">
<ContentTemplate>
<asp:Timer ID="TimerCheckForDraftUpdates" runat="server" Interval="10000" OnTick="TimerCheckForDraftUpdates_Tick">
</asp:Timer>
<asp:HiddenField ID="HiddenFieldLatestDraftUpdate" runat="server" />
<asp:HiddenField ID="HiddenFieldRestricted" runat="server" />
<asp:Panel ID="PanelDraftUpdateNotif" runat="server" Visible="false">
<div class="bannerwarn">
<asp:Label ID="LabelDraftUpdate" runat="server" Text="This draft was edited by:"
CssClass="bannerwarnlabel"></asp:Label>
<asp:LinkButton ID="LinkButtonViewUpdates" runat="server" CssClass="bannerwarnlabel"
OnClick="LinkButtonViewUpdates_Click">See The Updates</asp:LinkButton>
<asp:ImageButton ID="ImageButtonCloseDraftNotif" runat="server" ImageUrl="~/Images/window_close.bmp"
CssClass="bannerwarnclose" OnClick="ImageButtonCloseDraftNotif_Click" />
</div>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
Когда пользователь нажимает кнопку ссылки, страницу можно перенаправить одним из двух способов в зависимости от состояния. Объект Memogram сохраняется в состоянии сеанса при загрузке страницы. Источник для нажатия кнопки ссылки:
protected void LinkButtonViewUpdates_Click(object sender, EventArgs e)
{
//it is possible the MG was moved out of the draft state. In this case, we must redirect to the view page.
Memogram mg = new Memogram();
try
{
mg = SessionWrapperUser.Current.curMemogram;
}
catch (Exception)
{
mg = Memogram.GetMemogramById(GetMemogramIdFromPageRequest());
}
if (mg.GetStateName().ToLower() == "draft")
{
Page.Response.Redirect(Page.Request.Url.ToString(), true);
}
else
{
Page.Response.Redirect("ViewMemogram.aspx?mid=" + mg.MemogramId.ToString(), true);
}
}
Проблема, с которой я столкнулся, заключается в том, что в среде разработки (IE8) и на производственных клиентах, работающих под управлением IE8, все работает нормально. Однако производственные клиенты, использующие IE6, зависают при нажатии кнопки ссылки. Не только браузер IE6 зависает, но и весь браузер перестает отвечать на запросы и должен быть закрыт и перезапущен.