浅析ASP.NET的Page.IsPostBack 属性

http://www.sina.com.cn 2008年05月06日 11:33  IT168.com

【IT168技术文档】

现在从对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。

在ASP.NET应用程序中,如果需要在页面第一次显示时执行一些初始化操作,必须判断IsPostBack属性!

在ASP.NET使用Page.IsPostback,那么就可以避免往返行程上的额外工作:如果处理服务器控件回发,通常需要在第一次请求页时执行代码,该代码不同于激发事件时用于往返行程的代码。如果检查?Page.IsPostBack?属性,则代码可按条件执行,具体取决于是否有对页的初始请求或对服务器控件事件的响应。这样做似乎很明显,但实际上可以忽略此项检查而不更改页的行为。该属性用的好坏,直接关系到你程序运行是否按照你最初的意愿,也关系到整个页面的效率。因为,如果每次都会给控件绑定数据,不管你是第一次访问,还是提交了数据以后,那么这个页面程序的效率可想而知。

一个B/S结构的页面每一次提交,它都会重新从头到尾执行一次。而C/S结构的程序就不会这样,这是和C/S结构的程序最大的区别!? 其实,得不到控件的数据,都是因为这个原因。【文章出处】

浅析ASP.NET的Page.IsPostBack 属性http://www.sina.com.cn 2008年05月06日 11:33 IT168.com相关推荐

  1. 浅析ASP.NET的Page.IsPostBack 属性

    浅析ASP.NET的Page.IsPostBack 属性 http://www.sina.com.cn 2008年05月06日 11:33  IT168.com [IT168技术文档] 现在从对ASP ...

  2. ASP.NET的Page.IsPostBack 属性详细说明(转)

    转自:http://www.donews.net/shanyou/archive/2004/04.aspx 现在从对ASP.NET页面的执行顺序开始,体会一下B/S结构的程序的特点,下图是ASP.NE ...

  3. asp.net IsPostBack属性

    ASP.NET的IsPostBack属性 现在从对ASP.NET页面的执行顺序开始,体会一下B/S结构的程序的特点,ASP.NET页面的执行顺序说明:Page_Init(页面初始化引发的事件)--&g ...

  4. ASP.NET @Page指令属性

    ASP.NET @Page指令属性 @Page指令位于每个ASP.NET页面的顶部,告诉ASP.NET这个具体页面使用什么属性,以及该页面继承的用户控件.ASP.NET页面@Page指令属性有:Asp ...

  5. %@ Page% page指令属性

    以前只知道会用就行,今天boss让我去理解一下<%@ Page%>里面的各个属性的用法,于是就有了这篇东凑西凑的文章! <%@ Page%>是页面指令,作用于当前页面,指定使用 ...

  6. ASP.NET(一):Reques对象和Response对象的区别,以及IsPostBack属性的用法

    导读:在ASP.NET的学习中,初步认识了其6大对象(严格说来只能算是属性):Request,Response,Application,Session,Server,OjectContext.这些对象 ...

  7. asp.net访问sqlserver获取数据、IsPostBack属性和VS可视化调试的概念

    新建一个asp.net网站:sqlserver中有如下一张表: 新建一个页面, demo1.aspx:在页面上添加一个GridView控件: demo1.aspx.cs代码: using System ...

  8. ASP.NET中防止页面多次加载的IsPostBack属性

    查查msdn,上边有IsPostBack的定义:获取一个值,该值指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问.如果是为响应客户端回发而加载该页,则为true:否则为 false. ...

  9. 不同页面之间传递值——Page.PreviousPage 属性

    注:此系列记录在我实际开发中遇到的问题和收藏一些技巧文章. 本篇技巧和诀窍记录的是:不同页面之间传递值,非常简单的技巧,我相信大家都知道. 这个场景太常见了,当然有许多许多的方法,我来介绍一种非常简单 ...

最新文章

  1. 两款简易计算器纯js版附源码下载
  2. Emscripten-mac安装与升级
  3. Mongodb副本集配置
  4. java integer null 0_Mybatis Integer类型参数值为0时得到为空的解决方法
  5. 乱用信用卡?黑名单见
  6. matlab自带图片下载,数字图像处理中Matlab的应用.pdf
  7. 运行stam 遇到的问题:
  8. oracle中NUMBER(10,2)含义
  9. 1600802047 android 第三次作业(音乐播放器)
  10. 【免费毕设】ASP.NET公交车管理系统的实现与设计(源代码+lunwen)
  11. caffe 中solver.prototxt
  12. 干货 | 自然语言处理中注意力机制综述
  13. 在搭建tesseract-OCR环境中遇到问题和反省
  14. MYSQL数据库脱库写马写一句话
  15. VS2010 正式版 破解方法详解 1
  16. Python系列9——类和对象(3)
  17. atomic and exclusive operation
  18. 自动驾驶两大路线对决,渐进式玩家为何更容易得人心?
  19. 晨读播报一:快手与抖音之间的较量
  20. 八百呼的手机录音系统,一个划时代的进步

热门文章

  1. TOMCAT的域名配置
  2. 使用powershell一次性创建用户,OU及组
  3. Java中类、方法声明为静态的含义
  4. NYOJ 518 取球游戏
  5. NYOJ 914 Yougth的最大化(二分搜索 + 贪心)
  6. NYOJ 287 Radar 贪心之 区间选点
  7. OWIN的理解和实践(三) –Middleware开发入门
  8. tomcat配置一个线程来调试ThreadLocal的代码问题
  9. sql server中对xml进行操作
  10. 【转】jQuery.ajax向后台传递数组问题