IsPostback小结
这两天一直碰到它,却总是不明白,甚至一开始连回传都不知道是啥。。现在终于理解了,分享给大家,当然,如有不妥之处,还请大家不吝指教!
解释
要想明白IsPostback,先来看看下面的这张图:
第一次加载页面的的时候就会产生第一个循环:1和2→3→4→5a,此时IsPostBack为false;
第二次及以后加载页面的时候即回传就会产生第二个循环:5b→6→7,这个时候IsPostBack为true。
其实,页面在首次加载后向服务器提交数据,然后服务器把处理好的数据传递到客户端并显示出来,就叫postback, ispostback只是一个属性,即判断页面是否是回传,if(!Ispostback)就表示页面是首次加载,这是很常用的一个判断方式.一个页面只能加载一次,但可以在加载后反复postback.
使用方法
IsPostBack一般用在Page_Load事件中,它的具体用法可以通过下面这个简单的例子来理解一下:
在Web页面中添加一个文本框TextBox1和一个命令按钮Button1
<asp:TextBox ID="TextBox1" runat="server" Text=""></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="清空" />
代码:
protected void Page_Load(object sender, EventArgs e)
{
//第一次加载
if (!Page.IsPostBack)
{
TextBox1.Text = "练习";
}
//回传,即第二次或者第N次加载
else
{
TextBox1.Text = "";
}
}
运行效果:当页面加载的时候显示的结果为:
点击“清空”命令按钮(没有任何代码),该过程将会提交表单到服务器,将会产生回传,运行结果如下:
总结
IsPostBack 是Page对象的一个重要属性。这是一个只读的Boolean类型属性,它可以指示页面是第一次加载还是为了响应客户端回传而进行的加载。有经验的程序员通常将一些耗费资源的操作(例如,从数据库获得数据或者构造列表项)放在页面第一次加载时执行。如果页面回传到服务器并再次加载,就无须重复这些操作了。因为,任何输入或构建的数据多已被视图状态(ViewState)自动保留在后续的回传中。