Как создать всплывающее окно сообщения для отображения сообщения об ошибке в веб-приложениях .net c #

#c# #.net #web-applications

#c# #.net #веб-приложения

Вопрос:

Кто-нибудь знает, как я могу создать всплывающее окно сообщения на стороне сервера, чтобы оно отображало сообщение об ошибке во всплывающем окне сообщения при сбое процесса сохранения?

Пример:

    protected void btnSave_Click(object sender, EventArgs e)
   {
       try
       {
           using (TransactionScope scope = new TransactionScope())
           {
               //save process

               scope.Complete();
               Response.Redirect(url);
           }
       }
       catch (TransactionAbortedException ex)
       {
          //pop-up message box to show error message
       }
       catch (ApplicationException ex)
       {
          //pop-up message box to show error message
       }
   }
  

Как я могу создать всплывающее окно сообщения в catch, чтобы при сбое процесса сохранения пользователю отображалось окно сообщения об ошибке?

Комментарии:

1. Вы хотите, чтобы всплывающее окно появлялось на сервере или клиенте?

2. @Kiranu — пожалуйста, скажи мне, что это был вопрос с подвохом — вы не можете заставить окно сообщения всплывать на сервере!

3. @slugster — Я знаю… но было неясно, было ли то, чего он хотел, возможным (всплывающее окно в клиенте) или невозможным (форма, созданная службой Windows)

Ответ №1:

Попробуйте использовать методы Page.RegisterStartupScript или ClientScript.RegisterStartupScript .

Комментарии:

1. Страница. RegisterStartupScript устарел.

2. Привет, Дрю, хороший способ получить принятые ответы — уточнить концепции в вопросе, а затем предоставить конкретный рабочий пример. Альтернативы также всегда хороши. Полный ответ, вероятно, со временем создаст для вас больше точек переполнения стека. Надеюсь, это поможет.

Ответ №2:

 ClientScript.RegisterStartupScript(
    this.GetType(), "myalert", "alert('"   errorText   "');", true);
  

или

  Response.Write(
     @"<SCRIPT LANGUAGE=""JavaScript"">alert('"   errorText   "')</SCRIPT>");
  

Комментарии:

1. @Alex Aza; Я применил код, который вы указали перед try{}catch () .. похоже, что ни одно окно сообщения не всплывало

2. @Jin Yong — странно, я тестировал это на .NET 2, 3.5 и 4 — у меня сработало.

3. Возможно, javascript отключен в браузере. Попробуйте включить его.

4. @Jin — Я только что понял, что вы не можете протестировать это таким образом, вы не можете применить это перед попыткой catch, потому что вы перенаправляете на run Response.Redirect(url); в обычном сценарии, который перенаправляет на другую страницу. Для правильного тестирования добавьте одну мою строку и выполните возврат сразу после этой строки.

5. @Jin Yong — из любопытства, какое решение сработало для вас? Вы использовали ‘Страницу. RegisterStartupScript’?

Ответ №3:

Вот один из способов:

 /// ---- ShowAlert --------------------------------
///     
/// <summary>
/// popup a message box at the client    
/// </summary>
/// <param name="page">A Page Object</param>
/// <param name="message">The Message to show</param>

public static void ShowAlert(Page page, String message)
{
    String Output;
    Output = String.Format("alert('{0}');",message);
    page.ClientScript.RegisterStartupScript(page.GetType(), "Key", Output, true);
}
  

Комментарии:

1. Чем это отличается от моего ответа? 🙂

2. @Alex — Когда я опубликовал свой ответ, ваш еще не был виден.

3. это странно. Разница в наших ответах составляет 15 минут. Итак, теперь, когда вы видите это, вы можете удалить дублирующийся ответ или изменить его на другой, верно?

Ответ №4:

Хотя упомянутые сценарии alert () в порядке, они кажутся довольно любительскими. Я бы порекомендовал два варианта.

  1. На вашей странице должна быть метка, которая обычно скрыта красным цветом шрифта и выделена жирным шрифтом. Затем просто сделайте его видимым и установите текст в поле ошибка.

  2. Если вам нужно поведение в диалоговом окне, используйте то, что вам показывают все, но вместо того, чтобы показывать предупреждение, выберите что-нибудь приятное из пользовательского интерфейса jQuery с красивым значком ошибки и даже ссылкой справки или чем-то еще в диалоговом окне. Вот пример:http://jqueryui.com/demos/dialog/#modal-message

Конечно, если вы хотите, чтобы ваше приложение казалось более надежным, не показывайте им никаких ошибок. 🙂