В нашем веб-приложении 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) Как мы можем справиться с дилеммой кнопки «Назад»?