asp.net:response.redirect 不起作用

问题描述 投票:0回答:7

我有一个 .aspx 表单,其中有一个组合框,其中包含我从数据库表中检索的主题。

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

我通过在按钮单击事件中调用函数 FillGrid() 来完成此操作。

我的网格视图的页面索引也发生了变化,其中再次调用了 FillGrid() 。

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

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

asp.net response.redirect
7个回答
7
投票

例如,您需要链接

index.aspx
。 所以你写这个:

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

但是

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

看这张图片:


3
投票

好吧,这样做...

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

现在原始页面将不会被发送回浏览器,您将被重定向到新页面。

Response.Redirect("~/err.aspx", true);
的问题在于,这样会形成异常,这可能会将控制发送到catch块..

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


2
投票

我遇到了完全相同的问题。由于内容页面的 master page 有错误,重定向无法正常工作。 这是示例代码:

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

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

Site.master 有 javascript 错误,因此 Response.Redirect 命令不起作用。


1
投票

试试这个:

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

0
投票

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

虽然您可以使用 Server.Transfer 来解决此问题,但我建议使用 ASP.NET 中内置的错误重定向。有关可用内容以及如何使用它们的更多信息,请参阅此页面


0
投票

对我来说,重定向问题出在我的 web.config 文件上。在该文件中,每个页面都被明确允许访问。一旦我为新页面添加了代码块,我就会重定向到 web.config 文件中,重定向就起作用了。希望如果有人遇到类似的问题,它可以节省他们的时间,而不是像我一样浪费一天的大部分时间。

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

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

0
投票

当服务器端编码的所有其他方法都失败时,您可以尝试 JavaScript

location.href=someUrl;
location.replace(someUrl);
。拥有一些设置 JavaScript 标志以触发 JavaScript 的服务器端代码,或有条件地生成所需的 JavaScript。我通常将触发的 JavaScript 放在网页底部。

© www.soinside.com 2019 - 2024. All rights reserved.