2012-04-05 68 views
1

我有一個頁面,我正在閱讀查詢字符串。如果查詢字符串中存在某個值,我正在註冊一個啓動腳本。腳本執行後,我想從querystring中刪除元素,並用新的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. 您可以將錯誤存儲在會話變量中,然後重定向到 錯誤頁面以將其顯示給用戶。
相關問題