2010-09-27 13 views
12

he mi propia excepción basada en una cierta condición y quiere generar una alerta cuando el control se presenta en este bloque catchCómo llamar a window.alert ("mensaje"); desde C#?

catch (ApplicationException ex) 
{ 
    //want to call window.alert function here 
} 
+1

¿Quieres decir un escritorio equivalente de 'window.alert'? ¿O se trata de una aplicación ASP.NET y desea que se muestre un cuadro de mensaje en el cliente? – Ani

Respuesta

1

No estoy seguro si entiendo pero supongo que usted está tratando de mostrar un cuadro de mensaje de ASP.Net?

Si es así, este artículo del proyecto código podría ser útil: Simple MessageBox functionality in ASP.NET

10

Es un poco difícil dar una respuesta definitiva y sin un poco más de información, pero una forma habitual es registrar un script de inicio:

try 
{ 
    ... 
} 
catch(ApplicationException ex){ 
    Page.ClientScript.RegisterStartupScript(this.GetType(),"ErrorAlert","alert('Some text here - maybe ex.Message');",true); 
} 
+0

¿Qué es "erroralert" en la solución anterior? – NayeemKhan

+0

@NayeemKhan - Ocultan esa información en la documentación. http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx – Jamiec

2

de mensaje como otros dijo, o RegisterClientScriptBlock si quieres algo más arbitraria, pero su caso de uso es extremadamente dudosa. La mera visualización de excepciones no es algo que desee hacer en el código de producción; no desea exponer ese detalle públicamente y desea registrarlo con el registro adecuado de forma privada.

+0

Estoy de acuerdo. Redirigir a una página de error personalizada fija después de registrar la excepción es una mejor práctica. –

5

Puede utilizar siguiente método de extensión desde cualquier página web o control de usuario anidado:

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); 
     } 
    } 
} 

siguiente manera:

class YourPage : Page 
{ 
    private void YourMethod() 
    { 
     try 
     { 
      // do stuff 
     } 
     catch(Exception ex) 
     { 
      this.ShowAlert(ex.Message); 
     } 
    } 
} 
+0

this.showalert() no está disponible – NayeemKhan

+0

@NayeemKhan: actualicé mi respuesta para mostrar cómo declarar un método de extensión – abatishchev

6

si está utilizando Ajax en su página que requiere script manager Page.ClientScript
no funcionará, Pruebe esto y haría el trabajo:

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

También puede hacer esto:

catch (Exception ex) 
    { 

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

    } 

esto mostrará el mensaje excepcion en el cuadro de alerta