Как позвонить в window.alert («сообщение»); из C #?

У меня есть собственное исключение, основанное на каком-то условии, и я хочу вызвать предупреждение, когда в этот блок перехвата попадает управление

catch (ApplicationException ex)
{
    //want to call window.alert function here
}
 Ani27 сент. 2010 г., 14:24
Вы имеете в виду настольный эквивалентwindow.alert? Или это приложение ASP.NET, и вы хотите, чтобы на клиенте отображалось окно сообщения?

Ответы на вопрос(8)

Вы можете использовать следующий метод расширения с любой веб-страницы или вложенного пользовательского элемента управления:

static class Extensions
{
    public static void ShowAlert(this Control control, string message)
    {
        if (!control.Page.ClientScript.IsClientScriptBlockRegistered("PopupScript"))
        {
            var script = String.Format("<script type='text/javascript' language='javascript'>alert('{0}')</script>", message);
            control.Page.ClientScript.RegisterClientScriptBlock(control.Page.GetType(), "PopupScript", script);
        }
    }
}

следующим образом:

class YourPage : Page
{
    private void YourMethod()
    {
        try
        {
            // do stuff
        }
        catch(Exception ex)
        {
            this.ShowAlert(ex.Message);
        }
    }
}
 NayeemKhan27 сент. 2010 г., 15:00
this.showalert () недоступен
 abatishchev27 сент. 2010 г., 15:12
@NayeemKhan: я обновил свой ответ, чтобы показать, как объявить метод расширения

MessageBox, как сказали другие, илиRegisterClientScriptBlock если вы хотите что-то более произвольное, но ваш вариант использования крайне сомнителен. Простое отображение исключений - это не то, что вы хотите делать в производственном коде - вы не хотите раскрывать эту деталь публично и хотите записать ее с надлежащей регистрацией в частном порядке.

 Christian Hayter27 сент. 2010 г., 14:28
Согласен. Лучше всего перенаправить на страницу с фиксированной пользовательской ошибкой после регистрации исключения.

Я не уверен, что я понимаю, но я предполагаю, что вы пытаетесь показать MessageBox из ASP.Net?

Если это так, эта статья проекта кода может быть полезна:Простая функциональность MessageBox в ASP.NET

Немного сложно дать однозначный ответ без дополнительной информации, но одним из обычных способов является регистрация сценария запуска:

try
{
  ...
}
catch(ApplicationException ex){
  Page.ClientScript.RegisterStartupScript(this.GetType(),"ErrorAlert","alert('Some text here - maybe ex.Message');",true);
}
 NayeemKhan27 сент. 2010 г., 14:56
что такое "erroralert" в приведенном выше решении?
 Jamiec27 сент. 2010 г., 15:21
@NayeemKhan - они скрывают эту информацию в документации.msdn.microsoft.com/en-us/library/asz8zsxy.aspx

Вы имеете в виду окно сообщения?

MessageBox.Show("Error Message", "Error Title", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

Больше информации здесь:http://msdn.microsoft.com/en-us/library/system.windows.forms.messagebox(v=VS.100).aspx

 Christian Hayter27 сент. 2010 г., 14:24
Нет. Вопрос касается веб-приложения, а не настольного приложения.
 Ruel27 сент. 2010 г., 14:28
На его первый неотредактированный вопрос, тег говорит,c# а также.net.

если вы используете Ajax на своей странице, которые требуют диспетчера сценариевPage.ClientScript
не будет работать, попробуйте это, и это сделает работу:

ScriptManager.RegisterClientScriptBlock(this, GetType(),
            "alertMessage", @"alert('your Message ')", true);

Вы также можете сделать это:

 catch (Exception ex)
    {

        ScriptManager.RegisterStartupScript(Page, Page.GetType(), "showError",
           "alert('" + ex.Message + "');", true);

    }

это покажет сообщение об исключении в окне предупреждения

Просто используйте это, чтобы показать окно сообщения с предупреждением в коде позади.

ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('Record Saved Sucessfully');", true);

Ваш ответ на вопрос