Обработка уведомлений / сообщений об ошибках в отношении кнопки «Назад» браузера. - PullRequest
1 голос
/ 20 февраля 2012

В нашем веб-приложении ASP.NET/C# мы обрабатываем сообщения об ошибках / уведомления с помощью div на нашей главной странице, которая установлена ​​на Visible="false". На наших страницах aspx мы создаем уведомление с использованием следующего кода:

public static void DisplayNotificationMessage(MasterPage Master, string message)
{
    if (Master.FindControl("divmsgpanel") != null)
    {
        Master.FindControl("divmsgpanel").Visible = true;
    }

    TextBox thetxtbox = (TextBox)Master.FindControl("txtboxmsgcontents");

    if (thetxtbox != null)
    {
        thetxtbox.Text = message;
    }
}

И HTML на главной странице:

<%--start msgpanel--%>
<div id="divmsgpanel" runat="server" visible="false">
<div id="msgpanelheader">
</div>
<div id="divmsgpanelmainstage">
    <asp:TextBox ID="txtboxmsgcontents" runat="server" TextMode="MultiLine" 
        Width="249px" SkinId="messageboxcontents"></asp:TextBox>
    <asp:Label ID="lblmsgcontents" runat="server" Text="Label"></asp:Label>
</div>
<div id="msgpanelfooter">
    <asp:Button ID="btnmsgcloser" runat="server" Text="Close" 
        onclick="btnmsgcloser_Click" />
</div>
</div><%--end msgpanel--%>

Пока это работает довольно хорошо - он предлагает нам централизованный способ обработки сообщений об ошибках для всех страниц, в то же время позволяя нам легко настроить стиль окна сообщения в соответствии со стилем всего сайта. Мы можем просто вызвать этот DisplayNotifcationMessage метод с любой страницы в одну строку. div также содержит кнопку «Закрыть», что снова делает ее Visible="false".

Единственная проблема, с которой мы сталкиваемся (или, по крайней мере, единственная известная нам проблема!) - это отправка форм. Например, на нашей странице «Добавить сотрудников», после того, как вы успешно добавили сотрудника, вы получаете приятное уведомление с помощью вышеуказанного метода, который говорит: «Сотрудник успешно добавлен». Проблема заключается в том, что после того, как вы нажали кнопку «Закрыть» окна сообщения, вы можете нажать кнопку «Назад» в браузерах, чтобы вернуться к предыдущему состоянию страницы (для которого атрибут «Видимое» окна сообщения был установлен в значение «истина»).

Я нашел несколько руководств, в которых подробно описываются «хитрости» для «отключения» кнопки «назад» (например, Тщательное изучение «Отключения кнопки« Назад »» . В конечном счете, эти «хитрости» не являются реальными решениями) к проблеме, а скорее обходные пути, которые не гарантированы.

Итоговые вопросы:

1) Является ли этот метод скрытого на главной странице централизованного окна сообщений жизнеспособным методом обработки сообщений об ошибках / уведомлений? Есть ли другие потенциальные подводные камни, которые мы еще не заметили?

2) Как мы можем справиться с дилеммой кнопки «Назад»?

...