2009-12-01 42 views
13

私が構築しているASP.NET Webアプリケーションで実装したUpdatePanelsで例外が発生すると、ページ上にJavaScriptエラーが発生し、アラートで利用可能なハイレベルなエラー出力が発生します。これは開発にはOKですが、システムがProductionになるとすぐに、複数の理由で明らかにうまくいかないことになります。私はJavascriptのエラーを制御するためにTry Catchなどで面倒な作業を取り囲むことができますが、場合によっては、メインページなどでユーザーエクスペリエンスをサポートするためのアクションを取る必要があります。UpdatePanel例外処理

シームレスでJavascriptエラーのない実装を提供するために、UpdatePanelsで発生するエラーを正常に処理する方法を教えてください。

答えて

18

あなたはのScriptManager(サーバー側)とのUpdatePanelを使用している場合、完全にサーバー側のエラーを処理するPageRequestManager(クライアント側)のEndRequestのイベントにAsyncPostBackErrorイベントの組み合わせを使用することができます。ここで

はあなたを助けるべきカップルのリソースです:

Customizing Error Handling for ASP.NET UpdatePanel Controls

Error Handling Customization for ASP.NET UpdatePanel

ここでは簡単な例です:私が行うには簡単な方法についてはこちらを書いた

// 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

ありがとう、ありがとうございました。 – Chris

+0

別の関連する問題を修正した後、これは素晴らしい結果でした:https://stackoverflow.com/questions/1671881/scriptmanager1-asyncpostbackerrormessage-not-showing-error-message – madamission

0

ページレベルのエラーメソッドをオーバーライドして、例外をキャッチし、どのようにフィットするかを処理できますか?

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

これは: http://www.wagnerdanda.me/2010/01/asp-net-ajax-updatepanel-error-exception-handling-the-simple-way/

あなただけのJavaScriptエラーのブラウザを修正し、ユーザーに例外メッセージを表示したい場合は、あなただけのフォームの宣言の後にどこかに自分のマスターページにこれを追加する必要があります。

<!-- 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> 

あなたがする必要はありませんメッセージをカスタマイズする必要がない場合でもOnAsyncPostBackErrorをキャッチします。 Go to my blog post if you want more information about this.

+0

Worked!とても有難い! –