Как отобразить Windows.Form.MessageBox в веб-приложении ASP.NET?

Я хочу отображать сообщения об ошибках проверки в MessageBox. У меня есть четыре текстовых поля и элемент управления One Button. Когда я нажимаю кнопку управления, текстовые поля без текста отображаются в MessageBox. Я почти сделал это, но проблема в том, что когда я нажимаю кнопку, MessageBox открывается как свернутое окно. Так что конечному пользователю это сложно понять. Я хочу отображать MessageBox для пользователя при нажатии кнопки.

Вот мой код, в событии нажатия кнопки

ErrorMsg="";

if (TextBox1.Text == "")
{
    ErrorMsg += "Name is required!";
    ErrorMsg += "\n";
}
if (TextBox2.Text == "")
{
    ErrorMsg += "Address is required!";
    ErrorMsg += "\n";
}
if (TextBox3.Text == "")
{
    ErrorMsg += "Phone No. is required!";
    ErrorMsg += "\n";
}
if (TextBox4.Text == "")
{
    ErrorMsg += "City is required!";
    ErrorMsg += "\n";
}
if (ErrorMsg.Length == 0)
{
     //Some Code
}
else
{
    MessageBox.Show(ErrorMsg, "Existing Address", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

Заранее спасибо...


person thevan    schedule 24.01.2011    source источник


Ответы (4)


Вы не можете использовать Windows MessageBox в приложении ASP.NET. Это просто не имеет смысла. ASP.NET выплевывает HTML/javascript/CSS, так что это то, что вы должны использовать, чтобы сообщить пользователю, что что-то пошло не так. Так, например, в приложении ASP.NET вы можете использовать RegisterStartupScript метод для внедрения javascript на страницу, который будет выполняться при загрузке страницы, и использовать функцию alert:

ScriptManager.RegisterStartupScript(this, GetType(), "error", "alert('oops');", true);

Другие более традиционные методы проверки в приложении ASP.NET включают использование элементы управления проверкой.

person Darin Dimitrov    schedule 24.01.2011
comment
До сих пор я использовал элементы управления валидацией. Но пользователь попросил меня отобразить как MessageBox. - person thevan; 24.01.2011
comment
@thevan, тогда вам придется объяснить пользователю, что ASP.NET и WinForms - это не одно и то же, и то, что он спрашивает, просто не имеет смысла, поскольку приложение ASP.NET работает на сервере. Удачи с этим объяснением, поскольку у вас, похоже, есть клиент с интересными ожиданиями :-) - person Darin Dimitrov; 24.01.2011
comment
Я подозреваю, что то, что хочет пользователь, - это предупреждение, а не MessageBox, но пользователь не знает о разнице, поскольку с точки зрения пользователя они не так уж отличаются - person Rune FS; 24.01.2011
comment
я проверил, и это работает (окно сообщения Windows в asp.net)... Можете ли вы объяснить, почему мы не можем использовать это?? Пожалуйста, объясните, я новичок :) - person Binod; 01.08.2013

Создайте функцию, например

private void MessageBoxShow(Page page, string message)
{
    Literal ltr = new Literal();
    ltr.Text = @"<script type='text/javascript'> alert('" + message + "') </script>";
    page.Controls.Add(ltr);
}

и вызовите его с любой страницы .aspx, например

MessageBoxShow(this,message);

важно то, что если вы используете UserControl, то вам нужно изменить параметр функции Page на UserControl.

person Serkan Hekimoglu    schedule 24.01.2011
comment
Вы должны использовать RegisterClientScriptBlock(), а не Controls.Add() - person abatishchev; 24.01.2011
comment
@abatishchev на самом деле я не очень хорошо разбираюсь в asp.net. Я разместил это, потому что я использую это, и меня это устраивает :) Если вы говорите, что должны использовать, я говорю: да, я должен :) - person Serkan Hekimoglu; 24.01.2011

Почему бы вам просто не использовать инструментарий управления Ajax?

Затем вы можете настроить содержимое всплывающего окна, и я считаю, что это менее навязчиво, чем всплывающее сообщение в стиле Windows.

person nik0lai    schedule 24.01.2011

мы можем использовать окно сообщений Windows даже в веб-приложении ASP.Net, необходимо выполнить шаги ниже

  1. Откройте обозреватель решений в Visual Studio и щелкните правой кнопкой мыши ссылку > Добавить ссылку
  2. Найдите сборки system.windows и system.windows.form и добавьте их
  3. затем в вашей форме .aspx, где вы хотите использовать окно сообщения, добавьте сборку, используя system.windows и system.windows.form, после чего вы можете использовать все функции, такие как приложение Windows, на своей веб-странице.
person Athar Raja    schedule 03.11.2017