该死的代码
三聪的博客
posts - 25,comments - 92,views - 64691

    页面刷新导致数据重复提交这个问题困扰我也很久了,在网上搜了一个大家把解决的办法多聚焦在了如何判定是刷新还是正常提交上了。这个方法通过Session放一些识别数据也可以解决问题。

    这里我只是想提供另外一个思路,不是完美解决重复提交,仅供博友们参考。

    “GET”与“POST”想必大家已经了解很多了,也只有在post时,才会担心刷新致使重复提交。自从asp.net出世,受winform的影响,大家肯定大量的烂用postback。我觉得,大部分展现数据时还是用get,大不了多加几个querystring,只有在执行数据操作时才用post, 一量数据提交完毕之后,立即切换成get方式,这样用户都没有机会使用刷新重复提交数据。当然,这只是我的尝试,欢迎大家提出反对意见。

 

      每次执行完一次事件,立即调用Reload,用GET方法重新查看已经提交数据。当然,如果这个提交的过程很久,其间用户点了刷新,这段代码就无能为力了。

      (根据博友提醒,代码作了小修改)

复制代码

    
protected void Button1_Click(object sender, EventArgs e)
    {
        count
++;
        
this.Button1.Text = count.ToString();
        Reload(
"run success!");
    }

    
private void Reload(string message)
    {
        
string script = "<script>alert(\"{0}\");window.location.href=\"{0}\";</script>";
        
string outstring;

        
if (string.IsNullOrEmpty(message))
        {
            Response.Redirect(
this.Request.Url.OriginalString);
        }
        
else
        {
            outstring 
= string.Format(script, message, this.Request.Url.OriginalString);
        Response.Write(outstring);
        Response.End();
        }

    }
复制代码

 

 

 

posted on   三聪  阅读(3294)  评论(12编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
< 2010年8月 >
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 1 2 3 4
5 6 7 8 9 10 11

作者:gateluck
出处:http://gateluck.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
点击右上角即可分享
微信分享提示