首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp.net:如何防止用户多次发布相同的数据

asp.net:如何防止用户多次发布相同的数据
EN

Stack Overflow用户
提问于 2011-09-23 06:40:39
回答 4查看 441关注 0票数 1

我有一个小的asp.net web应用程序。

它是sql-server-2008数据库的前端。

在他们填写完所有数据后,他们将按submit,数据将被发送到数据库。

在此之后,如果用户刷新页面,数据将再次发布!如何禁止这种情况发生?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-23 06:49:55

这是因为最后一个请求是对页面的POST请求,您需要做的是重定向,这样最后一个请求就变成了GET。

在处理完post数据之后,您只需使用以下命令重定向到同一页面:

代码语言:javascript
复制
Response.Redirect("~/ThePage.aspx");

这将阻止您直接从代码后台向用户显示消息,如果您希望使用此方法显示成功消息,则需要添加一个querystring或类似的内容:

代码语言:javascript
复制
Response.Redirect("~/ThePage.aspx?result=success");

然后检查页面绑定是否设置了用于显示成功消息的querystring,这样的检查可能如下所示:

代码语言:javascript
复制
if (Request.QueryString["result"] != null && Request.QueryString["result"].ToString().ToLower() == "success")
{
    //Show success message
}

另一个可能更好但可能需要更多工作的解决方案是将表单包装在更新面板中,您可以在此处阅读更多信息:http://ajax.net-tutorials.com/controls/updatepanel-control/

updatepanel会让表单使用AJAX提交,而不是完全回发。

票数 2
EN

Stack Overflow用户

发布于 2011-09-23 06:42:40

将Location标头发送回用户,将浏览器重定向到另一个页面:刷新将重新加载该另一个页面,而不是重新提交旧表单。

票数 4
EN

Stack Overflow用户

发布于 2011-09-23 06:47:13

你需要遵循Post/Redirect/Get模式,这在WikiPedia上有解释,Femi也提到过。在完成处理之后,在代码中执行到所需页面的Response.Redirect

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7522300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档