为了账号安全,请及时绑定邮箱和手机立即绑定

数据源控件与页面生命周期

标签:
C#

微软推荐使用DataSource控件,并使用DataSourceID指定数据源控件(似乎也未说明理由,至少我没有看到过)。但很多人并不认同,我一直感觉DataSource控件是一个“黑箱”。

除了ObjectDataSource不够灵活,使用反射,对性能会有所损耗外,我想它还存在下面的这个问题。

 

我以前问过这个问题:数据源控件读入数据和数据绑定发生在页面事件的哪一个阶段 ,但答案不是很令我满意。

今天我进行了一些测试,并归纳如下,如有缪误,还望各位指出。

 

1、数据源控件的绑定应分“页面初次(Raw)加载” 和“页面回发(postback)”两种情况讨论。

2、在页面初次加载时,数据源绑定应发生在PreRender之后,Render之前。通过设置断点或开启Trace功能可以推断出来。

3、问题的重点在于当页面被PostBack时。我们难免产生这些疑问:

  3.1  页面还会再次从数据源中读取数据么?

  3.2  应该不会!不然就太傻了。测试的结果也的确如此。那DropDownList1的状态时如何得以维护的呢?

  3.3  肯定是通过ViewState,我想。如何证明呢?可以禁掉ViewState试试看!

  3.4  果然,当ViewState=“false”之后,程序就不得不又运行到GetUsers()方法,来获取数据。(注意:和页面初次加载取值不同,这一次获取数据发生在Init之后,Load之前)

但这究竟是如何实现的呢?ASP.NET是在何时进行ViewState的判断,并进入不同的分支的呢?事实上,我不知道。。。我仅仅知道以下几个方法:

· LoadViewState()   //获取ViewState

· ProcessPostData()  //对ViewState进行处理

· GetView()  //ObjectDataSource的方法

还望高手指点!

 

4、然后,如果我们在btn_Click()方法,再加上修改数据源的代码,这必然进行再一次的绑定!似乎在性能上有稍许损耗,如果不使用DataSourceID,而直接使用DataSource的话,我们能进行更精确的控制,不是吗?  

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消