Page.IsPostBack 属性及AutoPostBack 属性
来源:互联网 发布:杭州淘宝客服工资多少 编辑:程序博客网 时间:2024/06/06 01:17
现在从对ASP.NET页面的执行顺序开始,体会一下B/S结构的程序的特点,下图是ASP.NET页面的执行顺序说明:
Page_Init(页面初始化引发的事件)——>Page_Load(加载页面时引发的事件)——>Control Event(服务器控件引发的事件)——>Page_UnLoad(页面从内存中卸载时引发的事件)
Page_Init和Page_UnLoad不常用,但是这里还是要说明一下。Page_Init和Page_Load事件区别在于,只有后者才能完全加载控件,绑定数据,虽然你可以在Page_Init中访问控件,但是其viewstate都不会被加载,所以此时控件中只拥有默认值。
这里说到了viewstate,我们先来做一个大致的了解——其实在ASP.NET中有两个viewstate。一个是控件本身的,用来维护控件自己的一些状态,比如说某个空间有变色的功能,它的viewstate就维护这个功能,这个viewstate是不能被用户访问的。相信自己写过控件的朋友都会有这样的感觉,自己写控件当然也要用自己的一个viewstate来维护这个控件的状态;而另外一个viewstate,是用户使用的,这个viewstate和Session几乎一模一样,必须要先对其进行定义,才能使用。
每当点击ASP.NET的Web网页上的Button、LinkButton或ImageButton等控件时,表单就会被发送到服务器上。如果某些控件的AutoPostBack属性被设置为true,那么当该控件的状态被改变后,也会使表单会发送回服务器。?(AutoPostBack属性,它只有两个bool值,true/false。如果这个属性被设置成false,那么点击后就不会立刻将变化传给服务器处理,也就不会有该控件的SelectedIndexChanged事件。)
每次当表单被发送回服务器,就会被重新加载,启动Page_Load事件,执行Page_Load事件处理程序中的所有代码(注意,是每次都会执行!)。
很显然把网页的初始化代码放在这里是最合适不过。我们经常会希望在每次加载网页时执行一些代码,如一些控件的数据绑定。
当我们希望只有在网页第一次加载时执行另一些代码(基本上都是数据的默认绑定),甚至希望一些代码在除首次加载外的每次加载时执行。那么我们可以利用IsPostBack特性来完成这一功能。在网页第一次加载时,该属性的值是false。如果网页因回送而被重新加载,IsPostBack属性的值就会被设置为true。
Page_Init(页面初始化引发的事件)——>Page_Load(加载页面时引发的事件)——>Control Event(服务器控件引发的事件)——>Page_UnLoad(页面从内存中卸载时引发的事件)
Page_Init和Page_UnLoad不常用,但是这里还是要说明一下。Page_Init和Page_Load事件区别在于,只有后者才能完全加载控件,绑定数据,虽然你可以在Page_Init中访问控件,但是其viewstate都不会被加载,所以此时控件中只拥有默认值。
这里说到了viewstate,我们先来做一个大致的了解——其实在ASP.NET中有两个viewstate。一个是控件本身的,用来维护控件自己的一些状态,比如说某个空间有变色的功能,它的viewstate就维护这个功能,这个viewstate是不能被用户访问的。相信自己写过控件的朋友都会有这样的感觉,自己写控件当然也要用自己的一个viewstate来维护这个控件的状态;而另外一个viewstate,是用户使用的,这个viewstate和Session几乎一模一样,必须要先对其进行定义,才能使用。
每当点击ASP.NET的Web网页上的Button、LinkButton或ImageButton等控件时,表单就会被发送到服务器上。如果某些控件的AutoPostBack属性被设置为true,那么当该控件的状态被改变后,也会使表单会发送回服务器。?(AutoPostBack属性,它只有两个bool值,true/false。如果这个属性被设置成false,那么点击后就不会立刻将变化传给服务器处理,也就不会有该控件的SelectedIndexChanged事件。)
每次当表单被发送回服务器,就会被重新加载,启动Page_Load事件,执行Page_Load事件处理程序中的所有代码(注意,是每次都会执行!)。
很显然把网页的初始化代码放在这里是最合适不过。我们经常会希望在每次加载网页时执行一些代码,如一些控件的数据绑定。
当我们希望只有在网页第一次加载时执行另一些代码(基本上都是数据的默认绑定),甚至希望一些代码在除首次加载外的每次加载时执行。那么我们可以利用IsPostBack特性来完成这一功能。在网页第一次加载时,该属性的值是false。如果网页因回送而被重新加载,IsPostBack属性的值就会被设置为true。
在ASP.NET应用程序中,如果需要在页面第一次显示时执行一些初始化操作,必须判断IsPostBack属性!
在ASP.NET使用Page.IsPostback,那么就可以避免往返行程上的额外工作:如果处理服务器控件回发,通常需要在第一次请求页时执行代码,该代码不同于激发事件时用于往返行程的代码。如果检查?Page.IsPostBack?属性,则代码可按条件执行,具体取决于是否有对页的初始请求或对服务器控件事件的响应。这样做似乎很明显,但实际上可以忽略此项检查而不更改页的行为。该属性用的好坏,直接关系到你程序运行是否按照你最初的意愿,也关系到整个页面的效率。因为,如果每次都会给控件绑定数据,不管你是第一次访问,还是提交了数据以后,那么这个页面程序的效率可想而知。
一个B/S结构的页面每一次提交,它都会重新从头到尾执行一次。而C/S结构的程序就不会这样,这是和C/S结构的程序最大的区别!? 其实,得不到控件的数据,都是因为这个原因。
autopostback 举例: label 显示listbox 单击选中的值
Partial Class Lists Inherits System.Web.UI.Page Protected Sub ListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged Label1.Text = ListBox1.SelectedItem.Text End SubEnd Class
<html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title>无标题页</title></head><body> <form id="form1" runat="server"> <div> <asp:ListItem>one</asp:ListItem> <asp:ListItem>two</asp:ListItem> <asp:ListItem>three</asp:ListItem> </asp:ListBox> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </div> </form></body></html>
ispostback 举例:
Partial Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Page.IsPostBack = True Then Label1.Text = "you entered" & TextBox1.Text.Trim() Else Label1.Text = "please enter some text and press a button" End If End Sub Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Label1.Text = "you click button1" End Sub Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click Label1.Text = "you click button2" End SubEnd Class
- AutoPostBack 属性 及 Page.IsPostBack 属性
- Page.IsPostBack 属性及AutoPostBack 属性
- AutoPostBack 属性 及 Page.IsPostBack 属性
- AutoPostBack 属性及Page.IsPostBack 属性
- Page.IsPostBack 属性及AutoPostBack 属性
- AutoPostBack 属性及Page.IsPostBack 属性
- Page.IsPostBack 属性
- page的isPostBack属性
- Page.IsPostBack属性
- Page.IsPostback 和 AutoPostback
- Page.IsPostback 和 AutoPostback
- Page_load事件 Page.IsPostBack属性
- AutoPostBack属性
- (3-19)关于Page.IsPostBack 属性
- ASP.NET的Page.IsPostBack 属性
- ASP.NET的Page.IsPostBack 属性
- Page.IsPostBack 属性 http://www.webjx.com
- 浅析ASP.NET的Page.IsPostBack 属性
- Android学习入门之HelloWorld
- linux错误修改inittab文件,无法启动,进入单用户模式进行修复的办法
- eclipse的conosle参数,开启osgi控制台
- linux系统无法正常启动之inittab配置文件出错
- 浅析Swing线程模型和EDT
- Page.IsPostBack 属性及AutoPostBack 属性
- iPhone: 对象沿路径动画
- HDU-1233 还是畅道工程
- 卸载oracle 11g
- 基本索引操作---添加删除更新文档
- 网络游戏同步
- 什么是ColdFusion?
- 在大数组中找重复和丢失的整数
- OFN鼠标驱动(四) -- i2c-core.c文件的分析