防止 F5重复提交数据

public string HiddenFieldID
    {
        get { return (string)ViewState["HiddenFieldID"]; }
        set { ViewState["HiddenFieldID"] = value; }

    }
    public string HiddenFieldUniqueID
    {
        get { return (string)ViewState["HiddenFieldUniqueID"]; }
        set { ViewState["HiddenFieldUniqueID"] = value; }

    }
    public string IsRefreshCookieName
    {
        get { return (string)ViewState["IsRefreshCookieName"]; }
        set { ViewState["IsRefreshCookieName"] = value; }

    }
    private static Control FindControlRecursive(Control Root, string Id)
    {

        if (Root.ID == Id)

            return Root;

        foreach (Control Ctl in Root.Controls)
        {

            Control FoundCtl = FindControlRecursive(Ctl, Id);

            if (FoundCtl != null)

                return FoundCtl;

        }

        return null;

    }
    public bool IsRefreshSubmit
    {
        get
        {
            if (IsPostBack)
            {
                if (Request.Cookies[IsRefreshCookieName].Value != (string)Request[HiddenFieldUniqueID])
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            else
            {
                return false;
            }

        }
    }
    protected override void OnPreRenderComplete(EventArgs e)
    {
        HiddenField hf = (HiddenField)FindControlRecursive(Page, HiddenFieldID);
        Response.Cookies.Add(new HttpCookie(IsRefreshCookieName, hf.Value));
        base.OnPreRenderComplete(e);
    }
    protected override void OnPreInit(EventArgs e)
    {
       
       
        base.OnPreInit(e);
    }
    protected override void OnPreLoad(EventArgs e)
    {

        if (!IsPostBack)
        {
            HiddenFieldID = Guid.NewGuid().ToString().Replace("-", "");
            IsRefreshCookieName = Guid.NewGuid().ToString().Replace("-", "");
        }
        HiddenField hf = new HiddenField();
        hf.ID = HiddenFieldID;
        hf.ClientIDMode = System.Web.UI.ClientIDMode.Static;
        Form.Controls.Add(hf);
        HiddenFieldUniqueID = hf.UniqueID;
        string script = "document.getElementByIdx_x('" + HiddenFieldID + "').value=Math.random()*1000;";
        Page.ClientScript.RegisterOnSubmitStatement(this.GetType(), Guid.NewGuid().ToString(), script);
        if (!IsRefreshSubmit)
        {
            Response.Write("Normal Submit");
        }
        else
        {
            Server.Transfer(HttpContext.Current.Request.RawUrl);
        }
        base.OnPreLoad(e);
    }

来源:

http://www.cnblogs.com/fmyuan2000 

http://blog.sina.com.cn/s/blog_88469758010140so.html






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值