a.aspx代码:
<asp:Button ID="btn1"  runat="server" Text="按钮1" onclick="btn1_Click" />
<asp:Button ID="btn2"  runat="server" Text="按钮2" onclick="btn2_Click" />
a.aspx.cs代码:
protected void btn1_Click(object sender , EventArgs e)
    {
        Response.Write(“111”);
     }
protected void btn2_Click(object sender , EventArgs e)
    {
        Response.Write(“222”);
     }
情况是这样的:
在页面上点按钮1,会显示111;点按钮2,会显示222;
点按钮2后,我刷新页面,.cs文件又会执行Response.Write(“222”);
请问大虾们,有没有办法让刷新时,不执行btn2_Click的操作!!!
火急,在线等!!!

解决方案 »

  1.   


     if (!IsPostBack)
            {Response.Write(“222”); }
      

  2.   

    把操作与否记下,如果写了就不写了,如果没写就写出。
    标记能到页面或者VIEWSTATE或者SESSION里。
    不知道楼主是不是也是这个意思。
      

  3.   

    好像没办法,除非你在Button_Click中Response.Redirect本页
      

  4.   

    不大明白意思,
    如果,你要视觉上不刷新,可以简单的用一些ajax 的东西实现。在 page_load 里 加些代码
    if (!IsPostBack)
    {
       。
    }
      

  5.   

    晕。如果加!IsPostBack,那整个按钮事件都不管用了。
       ajax?这个和ajax没一点关系
      

  6.   

    因为button是submit控件,你点了submit之后它是要执行post操作的,post过后再次刷新会重复此操作,任何浏览器都是这样
      

  7.   

    输出之后Response.Rediret()到原页面,好像不会。
      

  8.   

    放到UpdatePanel里就可以了,但是你在Button_Click中就不能写Response.Write了
      

  9.   

    我点了btn1后,刷新,但不要再执行一次btn1_Click操作
    改怎么改?
      

  10.   

    <asp:Button ID="btn2"  runat="server" Text="按钮2" /> 
    去掉 onclick="btn2_Click"就可以了
      

  11.   


    就像上边说的,这是一个POST机制的问题,除非你的处理用Javascript来实现,那样刷新就不会保留上次操作的信息了。
      

  12.   

    页面刷新问题,用ajax吧.
    那是浏览器避免二次提交,好像没办法.
      

  13.   

    关键是刷新不止是只有用js实现,像平时我们都习惯点浏览器上的刷新按钮,或右键点刷新,或直接按F5。
        如果在页面上加个button,用js  document.execCommand('Refresh'); 这样刷新肯定没问题
    前面三种刷新都会弹出一个对话框我就想不弹出这对话框,或默认选否(且不弹出来)
      

  14.   

    再顶顶,这问题好像只能用ajax解决了
       哎!还是得用ajax啊
      

  15.   

    用html控件..我现在开发项目如果要解决这样的问题,都是用的html控件或是js或是ajax来实现.. 
      

  16.   

    a.aspx代码: 
      <script type="text/javascript">
            function OK(id) {
                window.location.href = "a.aspx?tag"+id;
            }
        
        </script>
            <input id="Button1" type="button" value="按钮一" onclick="OK('btn1')"/>
            <input id="Button2" type="button" value="按钮二" onclick="OK('btn2')" />
    a.aspx.cs代码: 
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if(string.IsNullOrEmpty (Request.QueryString ["tag"]))
                {
                    switch (Request.QueryString["tat"])
                    {
                        case "btn1":
                            //代码块
                            break;
                        case "btn2":
                            //代码块
                            break;
                    }
                }
            }
        }
    采用了asp以前的思想, 可以实现你想要的结果,但可能不是最好的..
      

  17.   

     if (!Page.ClientScript.IsClientScriptBlockRegistered("doResubmitWait"))
            {
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                sb.Append("<script type=\"text/javascript\">");
                sb.Append("function doResubmitWait()");
                sb.Append("{");
                sb.Append(" if(window.document.readyState == 'complete')");
                sb.Append(" return true;");
                sb.Append(" else");
                sb.Append(" return false;");
                sb.Append("}");
                sb.Append("</script>");            Page.ClientScript.RegisterStartupScript(this.GetType(), "doResubmitWait", sb.ToString(), false);
                Page.ClientScript.RegisterOnSubmitStatement(this.GetType(), "submit", "return doResubmitWait();");
            }参考下吧。
      

  18.   

    补充,我是把代码定义在了PAGE的父类里
      

  19.   

    protected void Page_Load(object sender, EventArgs e) {    //可以在页面加载时设置页面的缓存为“SetNoStore()”,即无缓存    Response.Cache.SetNoStore();    //Session中存储的变量“IsSubmit”是标记是否提交成功的    if ((bool)Session["IsSubmit"]) 
       {      //如果表单数据提交成功,就设“Session["IsSubmit"]”为false      Session["IsSubmit"] = false;    }    else      //否则的话(没有提交,或者是页面刷新),不显示任何信息 
    } protected void btn1_Click(object sender , EventArgs e) 
        { 
         
            Response.Write(“111”); 
            Session["IsSubmit"] = true; 
            Response.Redirect("a.aspx");
        } 
    protected void btn2_Click(object sender , EventArgs e) 
        { 
            Response.Write(“222”); 
            Session["IsSubmit"] = true; 
            Response.Redirect("a.aspx");
        }    Session["IsSubmit"] = true;     //强制转换页面(不可少,否则刷新仍会重复提交,仍转到本页),     通过页面的转换将缓存中的提交的数据都释放了,即提交的标单数据不会被保存到缓存里,     如果后退的话,将会出现该页无法显示     Response.Redirect("post.aspx");
      

  20.   

    这位哥们的方法是不错,但不是我想要的结果。
     html控件有很多不足,比如说asp:button有个Enabled属性,input就没这个属性
      

  21.   

    第一:清cache
    第二:http://topic.csdn.net/u/20090925/10/52e3c6d8-2bdd-4bba-9971-68ced6eb6e42.html
      

  22.   

    这方法看起来不错,谢了哥们。
     但我已经用ajax改完了。这代码有点像java里的servlet