繁体   English   中英

防止刷新asp.net之后重新提交页面

[英]Prevent page re-submission after refresh asp.net

我有一个启用Ajax asp表单,用户可以在该表单上提交数据。

效果很好,但是当他/她按f5或刷新页面时,将重新提交表单。 这是一个常见的问题,并且也是重复的。

我已经在不同的论坛上阅读了很多关于此问题的问题,并实施了一些问题,但问题仍然存在。

我无法按照客户要求进行页面重定向。 我从这个问题中得到了参考。 它在本地计算机上运行良好,但是当我部署页面时甚至没有提交过一次。 我也做了一些努力,如下所示。

HiddenField hf = new HiddenField();

 protected void Page_Load(object sender, EventArgs e)
    { 

        if (!IsPostBack)
        {
           createToken();    //to check page is refreshed
        }

    }

public void createToken()
    {
        string token = System.Guid.NewGuid().ToString();
        Session["token"] = token;
        hf.Value = token;
    }
    private bool TokenIsValid()
    {
        string expectedToken = (string)Session["token"];
        if (expectedToken == null)
            return false;

        string actualToken = hf.Value;

        return expectedToken == actualToken;
    }

 protected void btnSubmit_Click(object sender, EventArgs e)
    {
        try
        {
            if (TokenIsValid()) // check that page is not refreshed by browser.
            {
                //insert logic
        }}

        catch (Exception ex)
        {


        }

有一个Dropdownlist会导致自动回发的大问题,并且无法禁用自动回发,因此隐藏字段的值会被清除。 我不知道如何防止重新提交。

我通过在会话中传递成功消息来解决它,将该消息写在page_load上并且如果该页面是新会话,则将该会话无效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM