如何在response.redirect之前执行启动脚本?

时间:2012-04-05 10:14:44

标签: c# javascript asp.net

我有一个页面,我正在阅读查询字符串。如果查询字符串中存在某个值,我正在注册一个启动脚本。执行脚本后,我想从查询字符串中删除该元素,并使用新的URL重新加载页面。

这是在页面预渲染事件中运行的代码。

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);
                }
            }

但重定向正在显示警报之前发生。如何显示警报,然后在关闭警报后我可以重定向页面?

1 个答案:

答案 0 :(得分:2)

由于Response.Redirect(url)正在发回HTTP 302,浏览器可能会忽略任何正文内容,因此您的启动脚本根本不会执行。一些选择:

  1. 您可以删除重定向并插入内容以允许用户访问 对您正在显示的任何错误消息做出反应。
  2. 您可以将错误存储在会话变量中,然后重定向到 一个错误页面,将其显示给用户。