博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
屏蔽重复提交表单
阅读量:6336 次
发布时间:2019-06-22

本文共 2335 字,大约阅读时间需要 7 分钟。

读了的博客中的《》一文之后,对于解决屏蔽重复提交表单有了更好的认识。

对于重复提交表单个人觉得有以下解决方案:

1、利用Ajax提交,这样的自然而然的不会再涉及到重复提交表单。
2、利用前后台标记,判断是否是重复提交-----------也就是博客中的方法。

个人学习了博客中的方法,加以自己的理解,做了下修改。

主要是的思想是:

  自己写一个类,去继承System.Web.UI.Page类,在此类中对Page类扩展。即:在页面下Render到页面时,发送一个到页面的Hide控件并增加一个Session。当再次访问时判断发回的控件的值和Session值是否一致,从而确定当前操作是否是有刷新导致的提交。

using System;using System.Collections.Generic;using System.Linq;using System.Web;/// ///Basepage 的摘要说明/// public class Basepage:System.Web.UI.Page{    private static string PAGE_REFRESH_TICKET_KEY = "__111111111111Key";    private string PAGE_SESSION_REFRESH_TICKET_KEY = "__2222222222Key";    protected override void OnPreRenderComplete(EventArgs e)    {        SynchroRefreshTicket();        base.OnPreRenderComplete(e);    }    ///     /// 同步页面和后台Session的票据    ///     private void SynchroRefreshTicket()    {        string strTicket = Guid.NewGuid().ToString();        ClientScript.RegisterHiddenField(PAGE_REFRESH_TICKET_KEY, strTicket);        Session[PAGE_SESSION_REFRESH_TICKET_KEY] = strTicket;    }    ///     /// 比较HiddenField的票据和Session中存储的票据是否相同,如果不相同则为通过刷新的方式进行的提交    ///     protected bool IsRefreshed    {        get        {            if (Page.IsPostBack)            {                if (string.Equals(Request.Form.Get(PAGE_REFRESH_TICKET_KEY), Session[PAGE_SESSION_REFRESH_TICKET_KEY]))                {                    return false;                }                else                {                    return true;                }            }            return false;        }    } }
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class _Default :Basepage //继承自己写的类{    protected void Page_Load(object sender, EventArgs e)    {    }    protected void Button1_Click(object sender, EventArgs e)    {        if (this.IsRefreshed)        {            //如果是重复提交的话,就重新加载本页面            //Response.Redirect(Request.Url.ToString());            Response.Write("刷新");        }        else        {            Response.Write("提交");        }    }}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>        

 

本文转自武沛齐博客园博客,原文链接:http://www.cnblogs.com/wupeiqi/archive/2013/03/23/2977337.html,如需转载请自行联系原作者

你可能感兴趣的文章
微信小程序---picker
查看>>
用户体验(《构建之法》读书笔记4)
查看>>
python系统编程(七)
查看>>
hdu 5909 Tree Cutting
查看>>
写给妹妹的信
查看>>
Log4j(3)--rootLogger根配置和appender输出类型配置
查看>>
Fiddler使用总结(二)
查看>>
(进阶篇)浅谈COOKIE和SESSION关系和区别
查看>>
Tip:SCO 2012 R2控制台注意事项
查看>>
【VMCloud云平台】拥抱Docker(五)Volume(2)
查看>>
NFS服务日志分析
查看>>
OSSIM安装注意事项
查看>>
在python下比celery更加简单的异步任务队列RQ
查看>>
C# DateTime 精确到秒/截断毫秒部分
查看>>
二维数组、字符串互相转换
查看>>
SDUT_线性dp联系结题报告:
查看>>
静态代码
查看>>
在Linux下配置squid[转载,待测试]
查看>>
MVC Music Store
查看>>
笛卡尔树
查看>>