0

親ウィンドウでリンクを選択すると開くポップアップ ページがあります。ポップアップのページ読み込みハンドラーで何らかの例外が発生した場合、エラーはポップアップ ページではなく、親ウィンドウに移動する必要があります。ポップアップ ページで例外が発生しない場合は、ポップアップにコンテンツのみが読み込まれます。

1 つの ASP ページからエラー メッセージが表示されます。

ポップアップ ページの catch ブロック内のコード:

catch(Exception ex)
{
    Response.Redirect("");
    Response.End();
}
4

3 に答える 3

0

Response.Redirectページをロードする場所を決定するために使用することはできません。これは、リクエストがサーバーに送信される前に決定されるため、サーバーコードの実行が開始されたときに、ページの移動先を変更するにはすでに遅すぎます。

ポップアップを閉じて、代わりに親ウィンドウにページをロードする場合は、それを行うポップアップにJavascriptコードを記述する必要があります。

例:

catch (Exception ex) {
   Response.Write(
      "<html><head><title></title></head><body>" +
      "<script>" +
      "window.opener.location.href='/ErrorPage.aspx?message=" + Server.UrlEncode(ex.Message) + "';" +
      "window.close();" +
      "</script>" +
      "</body></html>"
   );
   Response.End();
}
于 2009-05-29T10:45:30.533 に答える
0

catchブロックでエラーを処理している場合、何ができるか-javascript変数を宣言し、その変数にエラーテキストを設定します。

var errorDescription = ""; //Will hold the error description (in .aspx page).

エラーが発生した場合は、catchブロックでこれを行います-

try
{
    //Code with error
}
catch(Exception ex)
{
    ScriptManager.RegisterStartupScript(this, this.GetType(), "ErrorVariable", string.Format("errorDescription = '{0}'; CloseWindow();", ex.Message), true);
}

上記のコードの機能-エラーの説明を設定CloseWindow()し、aspxページで関数を呼び出します。この関数には、次のコード行が含まれます-

function CloseWindow() {
    window.parent.window.SetError(errorDescription);
    self.close();
}

この関数は、親ウィンドウの関数を呼び出して、それ自体を閉じます。このSetError()関数は、任意の方法でエラーを表示できます。

于 2009-05-29T10:47:24.367 に答える
0

新しいウィンドウとフルページのリクエストサイクルを使用するよりも、JavaScriptポップアップを使用してAJAXを介してリクエストを実行する方がユーザーエクスペリエンスが優れていると思います。javascriptでそれを行うと、すべてのインタラクションを同じページに保持する機能が提供され、「メイン」インターフェイスでエラーメッセージを取得するのが簡単になります。これを行う他の多くの方法の中で、jQueryを使用して、モーダルダイアログを管理するためのAJAXインターフェイスとダイアログプラグインの両方を提供できます。

于 2009-05-29T10:49:22.240 に答える