2009-12-01 25 views
13

Wenn Ausnahmen in den UpdatePanels auftreten, die ich in der von mir erstellten ASP.NET-Webanwendung implementiert habe, verursachen sie einen JavaScript-Fehler auf der Seite, der in der Warnung eine hohe Fehlerquote aufweist. Dies ist OK für die Entwicklung, aber sobald das System in Produktion ist, ist es offensichtlich nicht gut für mehrere Gründe. Ich kann umständliche Aktivitäten mit Try Catch etc. umgehen, um den Javascript-Fehler zu kontrollieren, aber in einigen Fällen möchte ich Aktionen auf der Hauptseite durchführen, um die Benutzererfahrung zu unterstützen.UpdatePanel Ausnahmebehandlung

Wie gehe ich vor, um Fehler zu behandeln, die in UpdatePanels anmutig auftreten, um eine nahtlose und Javascript fehlerfreie Implementierung bereitzustellen?

Antwort

18

Sie können eine Kombination aus dem AsyncPostBackError Ereignisse verwenden, auf dem Script (Server-Seite) und das Endrequest-Ereignis auf dem Pagerequestmanager (Client-Seite) vollständig serverseitige Fehler zu behandeln, wenn die Update verwenden.

Hier sind ein paar Ressourcen, die Sie sollten helfen:

Customizing Error Handling for ASP.NET UpdatePanel Controls

Error Handling Customization for ASP.NET UpdatePanel

Hier ist ein einfaches Beispiel ist:

// Server-side 
protected void ScriptManager1_AsyncPostBackError(object sender, 
    AsyncPostBackErrorEventArgs e) { 
    ScriptManager1.AsyncPostBackErrorMessage = 
     "An error occurred during the request: " + 
     e.Exception.Message; 
} 


// Client-side 
<script type="text/javascript"> 
    function pageLoad() { 
    Sys.WebForms.PageRequestManager.getInstance(). 
     add_endRequest(onEndRequest); 
    } 

    function onEndRequest(sender, args) { 
    var lbl = document.getElementById("Label1"); 
    lbl.innerHTML = args.get_error().message; 
    args.set_errorHandled(true); 
    } 
</script> 
+0

Vielen Dank dafür, sehr geschätzt. – Chris

+0

Dies funktionierte gut, nachdem ich ein anderes verwandtes Problem behoben: https://stackoverflow.com/questions/1671881/scriptmanager1-asyncpostbackerrormessage-not-showing-error-message – madamission

0

Können Sie die Fehlermethode auf Seitenebene überschreiben, fangen Sie die Ausnahme ab und behandeln Sie, wie Sie es für richtig halten.

protected override void OnError(EventArgs e) 
{ 
    //show error message here 
} 
9

ich hier über eine einfachere Art und Weise geschrieben zu tun dies: http://www.wagnerdanda.me/2010/01/asp-net-ajax-updatepanel-error-exception-handling-the-simple-way/

Wenn Sie nur den Browser JavaScript-Fehler beheben mögen, und die Ausnahmemeldung an den Benutzer anzuzeigen, benötigen Sie nur diese irgendwo nach der Form Erklärung zu Ihrer Masterpage hinzuzufügen:

<!-- This script must be placed after the form declaration --> 
<script type="text/javascript"> 
    Sys.Application.add_load(AppLoad); 

    function AppLoad() { 
     Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequest); 
    } 

    function EndRequest(sender, args) { 
     // Check to see if there's an error on this request. 
     if (args.get_error() != undefined) { 

      var msg = args.get_error().message.replace("Sys.WebForms.PageRequestManagerServerErrorException: ", ""); 

      // Show the custom error. 
      // Here you can be creative and do whatever you want 
      // with the exception (i.e. call a modalpopup and show 
      // a nicer error window). I will simply use 'alert' 
      alert(msg); 

      // Let the framework know that the error is handled, 
      // so it doesn't throw the JavaScript alert. 
      args.set_errorHandled(true); 
     } 
    } 
</script> 

Sie brauchen nicht zu fangen Sie den OnAsyncPostBackError ab, es sei denn, Sie möchten die Nachricht anpassen. Go to my blog post if you want more information about this.

+0

Arbeitete! Sehr geschätzt! –