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

问个关于ispostback的问题

一个asp.net的网页Default.aspx,上面就一个button1
Default.aspx.cs基本代码如下。:
public partial class _Default : System.Web.UI.Page
{
    public static int i = 0;
    public static int j = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        this.Response.Output.WriteLine("<br>Now i is " + ++i);
        if (!IsPostBack)
        {
            this.Response.Output.WriteLine("<br>Now j is " + ++j);
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Button1.Text = "abc " + j;
        //this.Response.Redirect("Default.aspx");
}
运行以后每次刷新页面按f5都直接刷新,i,j也每次都加(ispostback为false),
点击了一次按钮以后,再按f5刷新页面每次就会有提示框要求重试,重试以后刷出来的
页面j不再增长(ispostback为true),为什么点击了一次按钮前后都是刷新页面结果却
会不一样呢?

还有,如果把注释那行加上,点击按钮前后就没有区别了,这是为什么呢?
一直不是很清楚触发了page_load而ispostback=true的包括哪些情况。
--------------------编程问答-------------------- ispostback是服务器回发。F5是刷新,刷新是会重新加载页面的,Page_load中的无论是不是加!ispostback都会重新执行,当如果触发过按钮事件,就会有重试的情况,也就是我们常说重复提交。 --------------------编程问答--------------------
引用 1 楼 shadow841112 的回复:
ispostback是服务器回发。F5是刷新,刷新是会重新加载页面的,Page_load中的无论是不是加!ispostback都会重新执行,当如果触发过按钮事件,就会有重试的情况,也就是我们常说重复提交。

为什么按钮事件前f5 ispostback=false
按钮事件后f5 ispostback=true? --------------------编程问答-------------------- 按钮事件后,再按f5,相应于先刷新,在执行按钮事件 --------------------编程问答-------------------- F5是刷新,是重新加载页面,所以!ispostback,但是因为你点击了按钮事件,按照.net的机制,F5刷新会引起重复提交,也就是按钮二次点击,所以为ispostback。 --------------------编程问答--------------------
引用 4 楼 shadow841112 的回复:
F5是刷新,是重新加载页面,所以!ispostback,但是因为你点击了按钮事件,按照.net的机制,F5刷新会引起重复提交,也就是按钮二次点击,所以为ispostback。

谢谢,请问.net关于这方面的机制在哪里有详细点的介绍吗? --------------------编程问答-------------------- 刷新就是一次新的请求,IsPostBack 会执行,点击按钮时,其实是触发了submit 操作,这样 IsPostBack 就不会执行了 --------------------编程问答-------------------- HTTP是基于无状态的,
你刷新就相当于从新打开了,
官方对IsPostBack解释是这样的:该值指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。 
你要明白红色字体部分的含义,
所谓回发,通常是有一些页面控件触发的,
当你单击按钮时,就是一个回发
但当你刷新页面,就相当于你把IE关了,又从新打开该页.
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,