我有一个asp.net webform,我点击一个按钮来填充服务器端的C#变量。如果我是正确的,这是通过HTTP POST发生的(回发,因为我使用HTTP请求的主体将用户提供的数据与webform重新发送回服务器)
当服务器收到回发时,它会向客户端发送一些指令(例如“显示警告信息”)。
我的问题是,当我刷新(F5)webform时,会重新执行上次执行的操作。因此,当我刷新页面时会重新执行回发,从而触发服务器的响应。
如何禁用此行为?通过这个我的意思是如何击中F5只是重新加载页面,好像这是第一次(我猜我的所有代码后面的变量也将被恢复到默认值...)
答案 0 :(得分:2)
这是默认的浏览器行为。如果表单已提交,则F5将始终触发重新发布(PostBack)。
您可以通过在PostBack
之后重新定向到同一页面来解决此问题Response.Redirect(Request.RawUrl, false);
但如果您使用此功能,则无法像通常那样获得对客户端的响应。只有在重定向之前设置一个Session,然后在重定向之后在页面上处理它才是从服务器到客户端获得响应的唯一方法。
更好的是确保重新发布不会产生任何问题,例如重复的数据库条目等。