2010-09-27 13 views
12

Ho la mia eccezione sulla base di alcune condizioni e si vuole generare un avviso quando il controllo viene in questo blocco catchCome chiamare window.alert ("message"); da C#?

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

Vuoi dire un desktop-l'equivalente del window.alert'? O è un'applicazione ASP.NET e vuoi che una finestra di messaggio venga visualizzata sul client? – Ani

risposta

1

Io non sono sicuro se ho capito ma credo che si sta cercando di mostrare un MessageBox da ASP.Net?

Se è così, questo articolo progetto di codice potrebbe essere utile: Simple MessageBox functionality in ASP.NET

10

È un po 'difficile dare una risposta definitiva senza un po' di più informazioni, ma un modo di consueto è quello di registrare uno script di avvio:

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

cosa è "erroralert" nella soluzione sopra? – NayeemKhan

+0

@NayeemKhan - Nascondono tali informazioni nella documentazione. http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx – Jamiec

2

MessageBox come altri, oppure RegisterClientScriptBlock se vuoi qualcosa di più arbitrario, ma il tuo caso d'uso è estremamente dubbio. La semplice visualizzazione di eccezioni non è qualcosa che si desidera fare nel codice di produzione: non si desidera esporre pubblicamente quel dettaglio e si desidera registrarlo privatamente con una registrazione appropriata.

+0

Sono d'accordo. Il reindirizzamento a una pagina di errore personalizzata fissa dopo aver registrato l'eccezione è una procedura migliore. –

5

È possibile utilizzare metodo successivo estensione da qualsiasi pagina web o il controllo dell'utente nidificato:

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

prossimo modo:

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

this.showalert() non disponibile – NayeemKhan

+0

@NayeemKhan: ho aggiornato la mia risposta per mostrare come dichiarare un metodo di estensione – abatishchev

6

se si utilizza Ajax nella tua pagina che richiedono script manager Page.ClientScript
non funziona, Provalo e farebbe il lavoro:

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

Si può anche fare questo:

catch (Exception ex) 
    { 

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

    } 

questo mostrerà il messaggio exeption nella finestra di avviso