`
北极的。鱼
  • 浏览: 159002 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

避免页面重复提交

 
阅读更多

最近考虑了一个问题:假设当前一个用户在留言本提交留言。要求:提交操作结束后仍然显示本页,如果提交成功,那么要显示出提示信息和此次提交的留言。如果提交失败,那么显示操作失败的信息。

 

想了一会,没想到什么好的方案。去网上搜了一下,关键字为:aspnet 重复提交

发现网上讨论得很激烈。随便看了几个网页,主要是看了csdn上的。发现没什么好的方案。有的方案太长,直接没心思看下去。

打算自己想一个简单易行的方案。

想了一会,找到一个比较可行的方案(如果各位有更好的方案,本着开发人员的奉献精神,请更贴哈!)。

思路如下:

1.当用户的操作经过客户端的验证到达服务器端后。执行到按钮的点击事件中。首先将按钮设置为不可用。

2.执行一系列的操作。比如这里是插入数据库。

3.将数据库操作的结果保存在一个string变量中。

4.重新定向到本页,并且在地址后面加上查询字符串。类似:

string details = "数据库操作结果";
Response.Redirect(Request.RawUrl + "?result="+details);

5.在本页的页面加载事件中,获取这个字符串,并且执行相应的提示操作。类似:

this.lblDetails=Request.QueryString["result"];

 

 

======华丽的分割线==========================

在写上面的方法的时候,想到一个问题。

在第4步中,将这个结构加入地址信息的时候,要判断此地址中是不是已经有了其他附加信息(类似:test.aspx?city=nanjing&date=20110813&...),如果是的话,那么拼接本次结果信息的时候,拼接符号应该为"&"。而且还存在一个问题,如果附加信息本来就很长了,那么要考虑这个长度问题了。

所以,有了如下方法:

前3步都一样。

4.将查询结果存放进viewstate中。类型:

ViewState["result"] = "数据库操作结果";
Response.Redirect(Request.RawUrl);

5.在本页的页面加载事件中,获取这个字符串,并且执行相应的提示操作。类似:

this.lblDetails = ViewState["result"].ToString();

 

 

以上仅为本人思路,如有不对,请多指教。

 

 

 

 

0
1
分享到:
评论
2 楼 北极的。鱼 2011-08-13  
完整代码如下:

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["result"] != null)
    {
         this.lblDetails.Text = Session["result"].ToString();
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
     Button1.Enabled = false;
     string details = "数据库操作结果";
     Session["result"] = details;
     Response.Redirect(Request.RawUrl);
}
1 楼 北极的。鱼 2011-08-13  
以上2个方法,经过本人试验,都存在问题。

下面提供第三个思路:

1.当用户的操作经过客户端的验证到达服务器端后。执行到按钮的点击事件中。首先将按钮设置为不可用。

2.执行一系列的操作。比如这里是插入数据库。

3.将数据库操作的结果保存在session中,类似:Session["result"]="数据库操作结果"。

4.重新定向到本页。

5.在页面加载事件中查询Session["result"]。并将查询结果显示在客户端。

相关推荐

    asp.net 页面防止重复提交

    在ASP.NET开发中,页面重复提交是一个常见的问题,它可能导致数据冗余或一致性错误。防止重复提交对于确保数据的准确性和应用的稳定性至关重要。本文将深入探讨如何在ASP.NET环境中解决这个问题。 首先,理解问题的...

    防止页面重复提交demo

    在网页应用中,防止页面重复提交是一个重要的安全性与用户体验问题。重复提交可能导致数据不一致,影响系统的稳定性和数据的准确性。本示例"防止页面重复提交demo"将介绍一种结合前端控制与后台session存储随机token...

    ASP.NET中防止刷新页面造成表单重复提交

    ### ASP.NET中防止刷新页面造成表单重复提交 在Web应用程序开发中,特别是在使用ASP.NET进行网站构建时,一个常见的问题是表单重复提交。这通常发生在用户通过按下浏览器的F5键来刷新页面的情况下,此时之前的表单...

    [Jsp]防止页面表单重复提交的解决方法

    这样,即使用户刷新页面,也不会重新发送POST请求,而是进行GET请求,从而避免了重复提交。 3. **服务器端令牌验证** 在服务器生成一个唯一的令牌,将其隐藏字段添加到表单中。当表单提交时,服务器会检查令牌是否...

    j2ee服务器端避免重复提交

    在处理完请求后,服务器可以重定向到一个新的页面,防止用户刷新页面导致重复提交。 7. **JavaScript前端控制**: 在客户端使用JavaScript进行控制,例如禁用提交按钮或显示加载动画,防止用户在请求处理期间再次...

    防止Layui form表单重复提交的实现方法

    使用AJAX提交表单数据的好处是,可以避免页面刷新,并且可以自定义提交完成后的响应处理逻辑。在AJAX请求完成后,可以根据服务器返回的数据进行相应的页面更新,或者显示提交成功的提示。 为了进一步增强用户体验,...

    一个注解解决页面重复提交

    在网页应用中,用户可能会因误操作或网络延迟导致页面上的表单被多次提交,这被称为页面重复提交问题。为了解决这个问题,开发者通常会采取一些策略,其中使用注解是一种简洁有效的方法。本文将详细讲解如何利用注解...

    element-ui如何防止重复提交的方法步骤

    在IT行业中,尤其是在前端开发领域,防止用户重复提交是一项重要的任务,这有助于避免因网络延迟或用户误操作导致的数据混乱。Element-UI,一个流行的Vue.js组件库,提供了多种方式来处理这个问题。以下是如何在使用...

    刷新action避免重复提交

    防止提交 在用struts2.0标签开发中,经常要使用form提交.在点击"提交"后,我们通常会弹出一个提示信息的页面,用户此时有可能会按f5刷新当前提交的action,从而将多个相同的数据保存到了后台数据库,并且...避免重复提交呢?

    java实现防止表单重复提交

    服务器端避免表单的重复提交,利用同步令牌来解决重复提交的基本原理如下:(1)用户访问提交数据的页面,服务器端在这次会话中,创建一个session对象,并产生一个令牌值,将这个令牌值作为隐藏输入域的值,随表单一起发送到...

    利用Token机制解决重复重复提交

    - 完成对表单数据的处理后,调用`resetToken()`方法清除`HttpSession`中的Token值,避免重复提交。 #### 四、非Struts框架下的Token机制实现 对于非Struts框架的应用程序,也可以采用类似的Token机制来防止表单...

    javascript方式防止表单重复提交

    这种方法可以防止因为页面刷新导致的重复提交。 3. **利用Ajax异步提交**:通过Ajax提交表单,可以在后台处理完数据后再更新页面状态,这样用户不会看到页面刷新,也就无法再次提交。在`success`回调中,可以重置...

    struts token 防止页面刷新,重复提交

    为了避免这种情况的发生,Struts框架提供了内置的Token机制来防止重复提交。 #### 一、Token机制原理 Token机制是一种常见的防止重复提交的方法,其核心思想是为每一次表单提交生成一个唯一的Token值,并将这个...

    javascript实现避免页面按钮重复提交

    很多时候我们都需要防止重复提交,这方面的文章也比较多,实现的途径差别也很大.因为有些时候即使服务器能够...比如需要很长等待时间的操作,在首次提交后,不断重复提交,页面可能会死掉.用脚本来控制的话可以防止这种问题.

    JSP避免Form重复提交的三种方案

    这样,如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生。 if (isTokenValid(request, true)) { // your code here return mapping....

    不能重复提交

    ### 一、表单提交与防止重复提交 #### 表单提交的基本概念 在Web开发中,表单提交是指用户填写完表单后点击提交按钮,将表单中的数据发送给服务器端进行处理的过程。这通常涉及到HTML表单元素和服务器端脚本的交互...

    防止表单重复提交(asp.net )

    - 使用异步处理:使用Ajax提交表单,可以避免页面整体刷新,减少重复提交的机会。 - 提供明确的用户反馈:当表单成功提交后,显示清晰的反馈信息,告知用户操作已完成,防止他们因不清楚状态而多次尝试。 综上所...

    试谈在Web应用中如何避免表单的重复提交.pdf

    如何避免Web应用中的表单重复提交 在Web应用中,避免表单的重复提交是一个棘手的问题。用户在提交表单时可能因为网络速度的原因,或者网页被恶意刷新,导致同一条记录重复插入到数据库中。这篇文章将探讨如何从...

    Struts2解决表单重复提交

    为了避免刷新页面导致的重复提交,可以将结果视图的跳转类型设置为redirect,即将页面重定向到另一个视图,这样即使刷新也不会回退到原表单页面。除了直接使用redirect,还可以使用redirectAction,并在result中配置...

    SSH笔记-数据验证、上传下载、避免表单重复提交、自定义拦截器

    接着,我们讨论如何避免表单重复提交。在Web应用中,用户可能无意或有意地多次点击提交按钮,导致数据库中出现重复数据。为了防止这种情况,通常会在服务器端或客户端采取措施。在Struts2中,可以使用Session来存储...

Global site tag (gtag.js) - Google Analytics