asp.net:response.redirect无法正常工作

时间:2009-11-30 15:31:15

标签: asp.net response.redirect

我有一个.aspx表单,其中我有一个组合框保存主题我从DB表中检索。

点击提交按钮,在网格视图中查看与该主题相关的问题。

我是通过在按钮点击事件中调用函数FillGrid()来实现的。

我还对我的gridview进行了pageindexchanging,其中再次调用了FillGrid()。

在我的FillGrid()函数中,我使用了try catch块。如果发生错误,我想使用Response.Redirect()将页面重定向到错误页面。问题是这个response.redirect无效。其中一个原因是,在按钮点击时,表单会被发布两次。因为在到达response.redirect语句流后返回按钮单击FillGrid被调用的地方()。

我该如何解决这个问题?或简单地说,如何防止双重发布表单?

6 个答案:

答案 0 :(得分:6)

例如,您需要关联index.aspx。 所以你写这个:

Response.Redirect("index.aspx", true);

Response.redirect无效。现在转到设计视图选择要设置的按钮Response.redirect,然后按 F4 将打开按钮属性,然后您需要找到PostBackUrl选项,然后找到您的URL你想要的。

看到这张图片:

答案 1 :(得分:3)

嗯,这样做......

Response.Redirect("~/err.aspx", false);
HttpContext.Current.ApplicationInstance.CompleteRequest();

现在原始页面不会回发到浏览器,您将被重定向到新页面。 Response.Redirect("~/err.aspx", true);的问题是以这种方式形成异常,这可能会将控件发送到catch块。

•另一种方式当然是Server.Transfer()但我不认为你想要那样。

答案 2 :(得分:1)

试试这个:

Response.Redirect("url");
Response.End;

答案 3 :(得分:1)

我遇到了完全相同的问题。由于内容页面的母版页有错误,重定向无效。 这是示例代码:

FormsAuthentication.SetAuthCookie(loginUserDetail.UserName, false);
Response.Redirect(FormsAuthentication.DefaultUrl, false);

FormsAuthentication.DefaultUrl值为“/membersarea/wellcome.aspx”,而wellcome.aspx有一个名为Site.master的母版页。

Site.master有javascript错误,因此Response.Redirect命令无效。

答案 4 :(得分:0)

我相信你所看到的行为是正确的。 response.redirect通过浏览器完成。因此,当您收到错误时,页面将发布到浏览器,浏览器会触发重定向。重定向导致page_load再次触发(这是ASP.NET中的标准流程)。

虽然您可以使用Server.Transfer来解决这个问题,但我建议您使用ASP.NET内置的错误重定向。有关可用内容和使用方法的详细信息,请参阅this page

答案 5 :(得分:0)

对我来说,重定向问题与我的web.config文件有关。在该文件中,明确允许访问每个页面。在为新页面添加代码块后,我将重定向到web.config文件中,重定向成功了。希望如果有人遇到类似的问题,可以节省他们的时间,并且不会像我一样浪费大部分时间。

在web.config文件中,我添加了如下代码块:

  <location path="sitedirectory/yournewpage.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>