当前位置:编程学习 > C#/ASP.NET >>

问菜鸟问题

这样一段程序,页面里只有一个button
public partial class _Default : System.Web.UI.Page 
{
    public static int i = 0;
    public static int j = 0;
    public static int m = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        ++i;

        if (!IsPostBack)
        {
            this.Response.Output.WriteLine("<br>Now j is " + ++j+" m is "+m);
        }
        else
        {
            ++m;
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        --i ;
        this.Response.Redirect("Default.aspx");
    }
}
我的理解是:
在按过按钮之前,每次按f5就是调用pageload方法 每次ispostback=false

按按钮时,先执行pagelaod方法,这次ispostback=true;然后执行buttonclick方法,
然后再执行一遍pageload,这次ispostback=false
(redirect有没有可能是直接从ie缓存里读之前的default.aspx而不执行pageload呢)
我的理解对吗?

那么在按过按钮(触发过按钮事件)之后,再按f5,实际上的方法执行流程是怎么样的呢?每次执行pageload调用ispostback时值是怎么样的?

//调试结果是每次点击按钮,m会显示出+1,如果触发过按钮事件后按f5,m不变,但i都+1而且ispostback最终是false,很困惑。。求达人指教。 --------------------编程问答--------------------  if (!IsPostBack) 
        { 
            this.Response.Output.WriteLine(" <br>Now j is " + ++j+" m is "+m); 
        } 
只在你第一次打开时执行 点击按钮后不执行 在按F5也是不执行的 我感觉是这样的 --------------------编程问答--------------------
引用 1 楼 shanzhaikaifa 的回复:
if (!IsPostBack)
        {
            this.Response.Output.WriteLine(" <br>Now j is " + ++j+" m is "+m);
        }
只在你第一次打开时执行 点击按钮后不执行 在按F5也是不执行的 我感觉是这样的

 同意 --------------------编程问答--------------------
引用 1 楼 shanzhaikaifa 的回复:
if (!IsPostBack)
         {
             this.Response.Output.WriteLine("  <br>Now j is " + ++j+" m is "+m);
         }
 只在你第一次打开时执行 点击按钮后不执行 在按F5也是不执行的 我感觉是这样的

这个是这样,如果buttonclick方法里把response.redirect("default.aspx")这句注释掉,确实点按钮和点按钮后的f5都不会执行if(!ispostback)里的,但点按钮之后按f5是不是完全和点按钮一个效果呢?
测试了一下,如果没有redirect那行,貌似基本上没区别,加上那行以后,点按钮m会显示+1,而按f5 m值一直显示不变,不知道为什么 --------------------编程问答--------------------
引用 3 楼 fourfireliu 的回复:
引用 1 楼 shanzhaikaifa 的回复:
 if (!IsPostBack)
          {
              this.Response.Output.WriteLine("   <br>Now j is " + ++j+" m is "+m);
          }
  只在你第一次打开时执行 点击按钮后不执行 在按F5也是不执行的 我感觉是这样的

 这个是这样,如果buttonclick方法里把response.redirect("default.aspx")这句注释掉,确实点按钮和点按钮后的f5都不会执行if(!ispostback)里的,但点按钮之后按f5是不是完全和点按钮一个效果呢?
 测试了一下,如果没有redirect那行,貌似基本上没区别,加上那行以后,点按钮m会显示+1,而按f5 m值一直显示不变,不知道为什么

就是没有redirect,按钮和f5都能让m +1,i保持不变(+!然后-1),
如果有direct 按钮让m,i每次都+1,f5则i +1,m不变。弄不明白是为什么。。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,