none
防止页面刷新时提交数据 RRS feed

  • 问题

  • 现在有一A页面在按钮提交事件中执行Response.Write(string.Format("<script>window.open('Display.aspx?DisplayType={0}')</script>", sbType.ToString());

    当页面提交后,刷新本页面,他会继续执行上一次的查询操作重复打开Display.aspx并显示上一次的查询结果,怎么能防止这个问题呀~

    在网上找了好多,例如在这句话后面加上Response.Redirect("HistoryDataAnalysis.aspx")
    它就不打开Display.aspx这个页面了,为什么呀??真是郁闷!!
    2008年8月20日 3:54

答案

  • 没明白 什么意思,你想查询的结果在新窗口显示?

    asp.net 2.0的写法

    ButtonID.OnClientClick
    = "window.open('search.aspx?type=' + document.getElementById(" + TextBox1.ClientID + ").value,'_blank');return false;"


    2008年8月20日 5:11
    版主

全部回复

  • 利用Redirect使网页重定向相当于是重新打开了一次页面。当然就不会导致刷新重复执行的事情咯~~

    2008年8月20日 4:27
    版主
  • 可是当我第一次单击按钮进行查询时,它也不弹出查询结果的窗口了哈?
    2008年8月20日 5:04
  • 没明白 什么意思,你想查询的结果在新窗口显示?

    asp.net 2.0的写法

    ButtonID.OnClientClick
    = "window.open('search.aspx?type=' + document.getElementById(" + TextBox1.ClientID + ").value,'_blank');return false;"


    2008年8月20日 5:11
    版主
  • 对,查询的时候页面又重定向了 ,当然就相当于是没有点击查询了,查询的时候可以不用重定向,当涉及到一些敏感的操作时才作此动作,比如插入或者删除数据的时候。

     

    2008年8月20日 5:12
    版主
  • 是的我查询的结果通过window.open在新窗口中显示,可是现在每次刷新页面它都会弹出一个新的窗口显示上次查询的结果~
    有没有办法让它在刷新时不弹出结果窗口,而在点击按钮进行查询时才弹出窗口~
    2008年8月20日 5:54
  •  孟宪会 写:
    没明白 什么意思,你想查询的结果在新窗口显示?

    asp.net 2.0的写法

    ButtonID.OnClientClick
    = "window.open('search.aspx?type=' + document.getElementById(" + TextBox1.ClientID + ").value,'_blank');return false;"




    这个方法刷新就可以了
    2008年8月20日 5:56
    版主
  • 我新手哈  不知道这句话要加在什么事件中 是pageload 还是 按钮的单击事件中??

    另外它好像传递不了后台定义的变量的值哈?
    2008年8月20日 6:20
  •  

    Page_load

     

    2008年8月20日 13:08
    版主
  • 我的后台有好多变量需要通过它传递的,怎么传递??

    我原来用的       

    Response.Write(string.Format("<script>window.open('Display.aspx?DisplayType={0}&StartTime={1}&EndTime={2}&Parameter={3}&roadName={4}&name={5}')</script>", sbType.ToString(), StartTime, EndTime, sbParameter.ToString(), roadname, this.DropDownListRoadName.SelectedItem.Text));

     


    StartTime,EndTime等都是后台定义的变量能通过你说的方法传递吗?

     

    2008年8月21日 1:33
  • 孟子大哥帮帮忙哈~~~

     

    2008年8月22日 1:35
  • 你好,你说的后台定义的变量当然能够在page_load里面传递了,本身page_load就是可以写在后台.cs文件当中的。另外其实在asp.net页面里面前台和后台其实就是一个文件,不用理解成为两个不同的文件。
    2008年8月25日 2:42
  • 孟大哥 你写的那句话是不是有问题呀,我新建了一个页面,里面就有一个TextBox1和Button1,在PAGE_LOAD中加入了

    Button1.OnClientClick = "window.open('search.aspx?type=' + document.getElementById(" + TextBox1.ClientID + ").value,'_blank');return false;";

     

    可是它怎么就不弹出窗口呢?好像还获得不了TextBox1的值。

    2008年8月27日 2:30
  •  

    终于获得了TextBox1的值,原来是(" + TextBox1.ClientID + ")应该为('" + TextBox1.ClientID + "')

    可是又有了一个新问题,这种方法怎么获得CheckBoxList之类控件中的值呀??

    2008年8月27日 9:00