2012-04-05 13 views
1

私はクエリ文字列を読んでいるページがあります。クエリ文字列に特定の値が存在する場合、私は起動スクリプトを登録しています。スクリプトが実行された後、私はクエリー・ストリングから要素を削除し、新しいURLでページをリロードしたいと考えています。response.redirectの前に起動スクリプトを実行するには?

これはページプリレンダリングイベントで実行されるコードです。

for (int i = 0; i < this.Page.Request.QueryString.Count; i++) 
      { 
       if (this.Page.Request.QueryString[i].Equals("filesize")) 
       { 
        ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "Alert", "alert('Maximum file size exceeded.');", true); 

        var nameValueCollection = HttpUtility.ParseQueryString(HttpContext.Current.Request.QueryString.ToString()); 
        nameValueCollection.Remove("exception"); 
        string url = HttpContext.Current.Request.Path + "?" + nameValueCollection; 
        Response.Redirect(url); 
       } 
      } 

ただし、アラートが表示される前にリダイレクトが行われています。アラートを表示するにはどうしたら、アラートを閉じた後にページをリダイレクトできますか?

答えて

2

Response.Redirect(url)がHTTP 302を返送しているため、ブラウザは本文の内容を無視している可能性が高いため、起動スクリプトはまったく実行されません。いくつかのオプション:

  1. あなたがリダイレクトを削除し、 にユーザーを許可するコンテンツを挿入することができますが、あなたが表示されたエラーメッセージに反応します。
  2. エラーをセッション変数に格納し、エラーページを にリダイレクトしてユーザーに表示することができます。
関連する問題