人生密码

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

asp.net 服务器控件 点击后 为什么先执行 page_load事件,然后才执行相应的点击事件?

还有如果 page_load事件中不加
if (!IsPostBack)
{
     
}这个判断的话,有些相应的后台点击事件方法就不会被执行。 想不通,求各位大哥解释一下  

 

下面是一位大侠的讲解啊,,初学ASP.NET的同学,好好理解一下哦! :)

----------------------------------------------------------------------------

每一次回发,服务器端都要创建一个Page对象实例来处理用户请求。这个在你的asp.net入门书中没有学过?

如果这个概念都给省掉了,那么建议你找一个更加正规一点的asp.net学习方法。  

 

asp.net使用ViewState记录页面上成千上万状态信息,当回发时会自动触发相关控件的xxxChanged这类事件。如果你不写
 if (!IsPostBack)
 {
      
 }
那么你就重新绑定了相关控件。你都给改变得面目全非了,还怎么触发Changed事件?

比如说,你可以随便找出 Scott Mitchell 古老的asp.net2.0教程上的几十个案例中的任何一个,比如说页面上有GridView,你可以在页面上随便放一个按钮让其回发,然后你可以调试发现在页面重新回发(重新执行Page_Load)后人家的程序并没有再次查询数据库(查询其实就会产生错误的结果)进行重新绑定数据,但是页面上的GridView的数据界面显示依然没变。

这是因为,asp.net会自动在回发时从GridView控件内部的ViewState中取出原来的状态用于显示GridView,并且在它恢复了GridView控件的界面之后就会触发GridView的各种事件。

如果你在Page_Load中你的代码给人家GridView重新绑定新查询的数据,那么你就抹掉了asp.net辛苦创建起来的整个框架,此时你就不应该使用asp.net而使用asp去自己发明一套框架了。  

posted on 2016-10-12 15:27  德特(Data)人生  阅读(288)  评论(0)    收藏  举报