2011-06-23 66 views
7

Estoy intentando mostrar el mensaje de excepción a través del cuadro de alerta de javascript.Mostrar el mensaje de excepción a través de la alerta de javascript en asp.net

Aquí está el código de muestra.

public static void HandleException(Page page, Exception ex) 
{ 
    string message = ex.Message.ToString(); 
    ScriptManager.RegisterClientScriptBlock(page, page.GetType(), "", "alert('"+message+"');", true); 

} 

Se ejecuta si doy valores literales para la variable de cadena. p.

string message = "Hello World"; 

Pero falla si doy message = ex.Message;

¿Alguna idea?

+0

* "Pero falla si le doy el mensaje = ex.Message;" * ¿Falla *** cómo ***? –

+0

Me refiero a que el cuadro de alerta no aparece. Se muestra solo si la variable del mensaje tiene la cadena literal – rdp

+0

. Apuesto a que hay un mensaje de error en alguna parte. Consulte la consola de JavaScript del navegador. –

Respuesta

13

Es necesario codificar, por ejemplo usando JavaScriptSerializer porque si el mensaje contiene algunos caracteres de escape como ' o " esto definitivamente va a romper su javascript:

var message = new JavaScriptSerializer().Serialize(ex.Message.ToString()); 
var script = string.Format("alert({0});", message); 
ScriptManager.RegisterClientScriptBlock(page, page.GetType(), "", script, true); 
+1

Necesitaba modificar una función de biblioteca que devolviera la primera línea, ya que las secuencias de comandos ya se habían creado en todas las páginas. Encontré recortar las comillas útiles ya que Serialize agrega citas adjuntas: nuevo JavaScriptSerializer(). Serialize (ex.Message.ToString()). Trim ('"'); – TTT

1

¿Su ex.Message alguna alternativa caracteres en ella? Es posible que necesiten escapar.

2
try  
{  
    //do some thing  
}  
catch (Exception ex) 
{  
    Response.Write("<script language='javascript'>alert('" + 
     Server.HtmlEncode(ex.Message) + "')</script>");  
} 
Cuestiones relacionadas