• 解决因页面刷新而导致重复操作的问题


    用过ASP.NET的都知道,按钮操作之后会得到一个新的页面,然后用户通过浏览器的回退按钮可以回到原来的页面时,或者点刷新按钮刷新当前页面时,会显示对话框"不重新发送信息,则无法刷新页面",然后就有个"重试","取消"按钮,通常用户为了刷新页面而点击"重试",这样一点问题就来了,那么页面就会重复发送信息,并且执行先前按钮的操作,比如按钮是添加一行数据,那么刷新之后就会添加重复的数据.好的程序或许会报个提示说什么不能重复添加,甚至出个异常,没有限制的程序可能就任由用户重复的添加数据.这样当然是开发人员不想发生的,除非有极端的用户需求.
    最近学了下HttpModule的内容,可用来解决这个问题.
    这里利用HttpModule在页面请求之前,做一些操作,用一些标记标识每个请求的页面,程序如下,相互学习下.
    首先有个类继承IHttpModule
    NoRepeatOperModule

    第二步,在web.config中配置自定义的HttpModule
    Web.Config配置

    最后还要在asp.cs文件中处理如下,加个属性IsRefreshed,重写基类的OnPreRenderComplete,最后调用在btnTest_Click
    其实可以吧以下作为自定义的Page类,其他页面继承即可
    具体页面实现

    点击btnTest之后会写入一行,此时页面重新生成,点刷新或回退,再点"重试",将不会重复原来的操作.
  • 相关阅读:
    北京
    构建JDBC的基本代码
    JavaScript:制作简易计算器要注意的事项!
    JavaScript学习笔记-创建对象之设计模式
    .NET开源工作流RoadFlow-流程设计-流程步骤设置-事件设置
    .NET开源工作流RoadFlow-流程设计-流程步骤设置-数据设置
    .NET开源工作流RoadFlow-流程设计-流程步骤设置-按钮设置
    .NET开源工作流RoadFlow-流程设计-流程步骤设置-策略设置
    .NET开源工作流RoadFlow-流程设计-流程步骤设置-基本设置
    .NET开源工作流RoadFlow-流程设计-流程属性设置
  • 原文地址:https://www.cnblogs.com/shenba/p/926717.html
Copyright © 2020-2023  润新知