我有一个.aspx表单,其中有一个组合框,包含从DB表检索的主题。
点击提交按钮,可以在网格视图中查看与该主题相关的问题。
我通过在按钮单击事件中调用函数FillGrid()来实现。
我还为我的gridview设置了pageindexchanging,其中再次调用了FillGrid()。
在我的FillGrid()函数中,我使用了一个try catch块。如果发生错误,我想使用Response.Redirect()将页面重定向到错误页面。问题是这个response.redirect不起作用。其中一个原因是按钮点击表单被发送两次。因为在到达response.redirect语句流后,返回到按钮点击,在那里调用FillGrid()。
我该如何解决这个问题?或者简单地说,我该如何防止表单重复发布?
7条答案
按热度按时间6kkfgxo01#
例如,你需要链接
index.aspx
。所以你写这个:字符串
但是
Response.redirect
不工作。现在转到设计视图,选择您要设置Response.redirect
的按钮,然后按F4,将打开按钮属性,然后您需要找到PostBackUrl
选项,然后找到您想要的URL。请看这张图片:
的数据
gkl3eglg2#
好吧,这样...
字符串
现在,原始页面将不会回发到浏览器,您将被重定向到新页面。
Response.Redirect("~/err.aspx", true);
的问题是,以这种方式形成异常,这可能会将控件发送到catch块。·另一种方法当然是Server.transfer(),但我不认为你想要这样。
z8dt9xmd3#
我遇到了完全相同的问题。重定向不工作,因为内容页的母版页有错误。这是示例代码:
字符串
DefaultUrl值为“/membersarea/wellcome.aspx”,并且wellcome.aspx有一个名为Site. master的母版页。
Site.master有JavaScript错误,所以Response.Redirect命令不起作用。
dffbzjpn4#
试试这个:
字符串
pbwdgjma5#
我相信你看到的行为是正确的。响应.重定向是通过浏览器完成的。所以当你得到一个错误时,页面被发布到浏览器,浏览器触发重定向。重定向导致page_load再次触发(这是ASP.NET中的标准流程)。
虽然您可以使用Server.Transfer来解决这个问题,但我建议您使用ASP.NET中内置的错误重定向。有关可用内容以及如何使用它们的更多信息,请参阅this page。
ecfsfe2w6#
对我来说,重定向问题是与我的web.config文件。在该文件中,每个页面都是专门允许访问的。一旦我添加了代码块,我将重定向到web.config文件中的新页面,重定向工作。希望,如果有人有类似的问题,它可以保存他们的时间,而不是像我一样浪费大部分时间。
在web.config文件中,我添加了如下代码块:
字符串
ybzsozfc7#
当所有其他方法都失败时,您可以尝试JavaScript,例如
location.href=someUrl;
或location.replace(someUrl);
。使用一些服务器端代码,设置JavaScript标志以触发JavaScript,或有条件地生成所需的JavaScript。我通常在网页底部触发JavaScript。