我有一个 .aspx 表单,其中有一个组合框,其中包含我从数据库表中检索的主题。
提交按钮,单击该按钮可在网格视图中查看与该主题相关的问题。
我通过在按钮单击事件中调用函数 FillGrid() 来完成此操作。
我的网格视图的页面索引也发生了变化,其中再次调用了 FillGrid() 。
在我的 FillGrid() 函数中,我使用了 try catch 块。如果发生错误,我想使用 Response.Redirect() 将页面重定向到错误页面。问题是这个response.redirect不起作用。原因之一是单击按钮时表单会发布两次。因为到达response.redirect语句流后返回到调用FillGrid的按钮单击()。
我该如何解决这个问题?或者简单地说,如何防止表单重复发布?
例如,您需要链接
index.aspx
。
所以你写这个:
Response.Redirect("index.aspx", true);
但是
Response.redirect
不起作用。现在转到设计视图,选择您要设置的按钮Response.redirect
,然后按F4,将打开按钮属性,然后您需要找到PostBackUrl
选项,然后找到您想要的URL。
看这张图片:
好吧,这样做...
Response.Redirect("~/err.aspx", false);
HttpContext.Current.ApplicationInstance.CompleteRequest();
现在原始页面将不会被发送回浏览器,您将被重定向到新页面。
Response.Redirect("~/err.aspx", true);
的问题在于,这样会形成异常,这可能会将控制发送到catch块..
•另一种方法当然是 Server.Transfer() 但我认为你不想要那样。
我遇到了完全相同的问题。由于内容页面的 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 命令不起作用。
试试这个:
Response.Redirect("url");
Response.End;
我相信您所看到的行为是正确的。 response.redirect 是通过浏览器完成的。因此,当出现错误时,页面会发布到浏览器,浏览器会触发重定向。重定向导致 page_load 再次触发(这是 ASP.NET 中的标准流程)。
虽然您可以使用 Server.Transfer 来解决此问题,但我建议使用 ASP.NET 中内置的错误重定向。有关可用内容以及如何使用它们的更多信息,请参阅此页面。
对我来说,重定向问题出在我的 web.config 文件上。在该文件中,每个页面都被明确允许访问。一旦我为新页面添加了代码块,我就会重定向到 web.config 文件中,重定向就起作用了。希望如果有人遇到类似的问题,它可以节省他们的时间,而不是像我一样浪费一天的大部分时间。
在 web.config 文件中我添加了如下代码块:
<location path="sitedirectory/yournewpage.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
当服务器端编码的所有其他方法都失败时,您可以尝试 JavaScript
location.href=someUrl;
或 location.replace(someUrl);
。拥有一些设置 JavaScript 标志以触发 JavaScript 的服务器端代码,或有条件地生成所需的 JavaScript。我通常将触发的 JavaScript 放在网页底部。