http://topic.csdn.net/u/20090223/18/c13434d0-093c-43bd-a942-a53b303966d4.htmlA頁面-->B頁面-->showModalDialog出一個C頁面(C頁面是用來Insert數據庫的)-->關閉C頁面跳到A頁面A頁面此時點“后退”確實如CutBug 最上面的連接帖子里第16樓說的,緩存好像是清掉了,網頁也提示警告:說網頁過期。但是現在新的問題又出現了:再次點刷新又回到C頁面,C頁面資料有被insert到DB中去了 ???Debug的時候不會出現這樣的錯誤,頂多就轉到B頁面,打死也不會轉到C頁面,可是我發布后就直接跳C頁面了????為什么呀!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    你的B页面的showModalDialog是什么时候调用的?
    如果你刷新B页面,相当于重复了上次B页面的操作,再次调用showModalDialog,打开C==这一切都是正常的。
      

  2.   

    一般insert到DB中时,都跳转到A。通过url的指向,
    就是避免刷新可以在此插入数据的
      

  3.   

    虽然你没有采纳我在http://topic.csdn.net/u/20090223/15/12a5614c-3b79-4bea-a826-c0505859471b.html这里的意见,但是我推荐你看看我的回复。尤其是我在最后推荐的那种方法。
      

  4.   

    可以使用随机数+session来防止重复提交。
      

  5.   

    晕死:
    b Click事件改一下
     protected void Button1_Click1(object sender, EventArgs e)
        {
            string page = "C.aspx";
            string js = "window.showModalDialog('" + page + "', '','dialogWidth:1000px;dialogHeight:500px;resizable:yes;center:yes;dialogHide:true;status:no');window.location.href='A.aspx'";
            if(!ClientScript.IsClientScriptBlockRegistered("submitJs"))
            ClientScript.RegisterClientScriptBlock(this.GetType(), "submitJs", js, true);
        }
      

  6.   

    <asp:Button UseSubmitBehavior="false"
      

  7.   

    To CutBug:
       是的,是快瘋了。To Cpp2017:
        我加了時間戳,依然可以后退,我在Debug時都是OK的,隨便怎么刷新都刷不出來,可一旦發布了先后退再刷新C頁面又被提交了。C頁面是另一個公司TPE的一個程序員寫的,他用JS+Webservice寫的,后臺只是簡單的給兩個隱藏控件附了值。
      

  8.   

    接上一層:C頁面是沒有提交按鈕的,用偽AJAX做的。
      

  9.   

    To CutBug:
         你這個方法是不是會改IIS的設置啊?
    我用了你這個方法后,發布網站后網站開啟失敗,直接提示我:伺服器應用程式無法使用 
    您嘗試在此 Web 伺服器上存取的 Web 應用程式目前無法使用。請按 Web 瀏覽器中的 [重新整理] 按鈕,再試一次。 系統管理員注意: Web 伺服器的應用程式事件記錄檔中的錯誤訊息詳細說明了這項特定要求失敗原因。請檢閱這個記錄項目,查看造成錯誤的原因為何。 
      

  10.   

    To CutBug:
        我的是VS2008,我用你的方法后另開一個Test并發布網站。錯誤如上一層,查看事件檢視提示:同一個 IIS 處理序中不能執行兩個不同版本的 ASP.NET。請使用 IIS 系統管理工具重新設定伺服器使用不同的處理序來執行應用程式。    重新C:\WINDOWS\Microsoft.Net\Framework\v2.0.50727\aspnet_regiis.exe -i后OK。
      

  11.   

    To findcaiyzh:
        THX,正在Try
      

  12.   

    唉,頂一下吧
        private static bool SubmitState = false;
        protected void Page_Load(object sender, EventArgs e)
        ...{
            //判断页面是否初始化以及提交的状态
            if (IsPostBack && SubmitState)
            ...{  
                    //从委托队列中删除原始事件
                this.Button1.Click -= new EventHandler(Button1_Click);
                this.Button1.Click += new EventHandler(kenButton1_Click);
             
            }
        }
      
        //重复提交事件
        private void kenButton1_Click(object sender, EventArgs e)
        ...{
            Response.Write("请不要重复提交,或者刷新");
           
        }    //提交 
        protected void Button1_Click(object sender, EventArgs e)
        ...{ 
                
                Response.Write("提交成功");
                SubmitState = true;
                this.Button1.Click -= new EventHandler(Button1_Click);
                this.Button1.Click += new EventHandler(kenButton1_Click);
           
                               
        }
      

  13.   

    我想是c页面出的问题,js没设定防止重复操作的东西,让他们公司程序员加
      

  14.   

    To hhxxcj:
       這樣會死循環在A頁面的。
       我加過一個D頁面,從C跳到D,由D跳到A,A后退到D,D里面會再跳到A。可惜行不通,它還是直接回到了C。。
      

  15.   

    我推荐你一下就简单的就是给它存在Session中就行了,那样判断Session 是否为空就行了
      

  16.   

    我推荐你一下就简单的就是给它存在Session中就行了,那样判断Session 是否为空就行了
      

  17.   

    我的是.net2.0,你照这个思路,就是注册这个脚本的时候,先判断有没有注册,没有就注册就行了
    不要直接Response.Write这个脚本        if(!ClientScript.IsClientScriptBlockRegistered("submitJs"))
            ClientScript.RegisterClientScriptBlock(this.GetType(), "submitJs", js, true);