.NETasp.net入门:认清.net控件之button


  做不值钱, 没有技术含量, 拖拖控件就行了。 ————这类言语我最讨厌了, 一点技术含量都没有, 不懂就瞎嚷嚷。 不管做什么, 做好都不容易, 你没做过怎么知道没有技术含量呢?我们既享用控件带来的快捷, 也知其原理, 甚至可以自己开发控件, 你还能说我们没技术含量?!

  提到了page类, page的生命周期里有些事情是和处置控件类有关的。

  使用该事情来执行下列操作:

  反省ispostback属性来确定是不是第一次处置该页。

  创立或重新创立动态控件。

  动态设置主控页。

  读取或设置配置文件属性值。

  这不是事情;在处置的这个阶段, page对象会在每个控件上调用此方法。 一切aspweb效劳器控件都有一个用于写动身送给浏览器的控件标记的render方法。

  . NET如果创立自定义控件, 通常要重写此方法以输入控件的标记。 不过, 如果自定义控件只合并规范的aspweb效劳器控件, 不合并自定义标记, 则不需求重写render方法。

  一个是初始化, 一个是显示, 其他的还有事情之类的, 我们暂且不提。 我们可以看出, 初始化其实就是实例化desinger. cs里用到的控件。 而最终这些控件都需求转换成html标签, 也就是被page调用其render方法。 page自身也是控件所, 以page的render就是担任生成html的。

  控件类都在system. web. ui. webcontrols下, 我们可以翻开msdn查看一些常用控件的类和其相关的事情方法。 如果有用refletor的话, 可以翻开system. web. dll查看愈加详细的源码。 你会发现有意思的继承关系, 了解ms的设计理念, 也更方便我们对控件有个愈加清晰的认识。

  __dopostback就是动身form的提交, 而button2调用的时分传值了自己的名字, 然后__eventtarget的值被设为了button2, 这样在提交的时分, post的数据里就会通知效劳端是button2触发的!再看button1却没有调用__dopostback, 因为他是submit类型, 在提交的时分浏览器会把他的名字默许提交过去, 同时其他的按钮不会被提交。

  所以, 既然效劳端知道了是哪个按钮被点过, 自然就会调用该按钮实例的onclick方法。 看看page类里有一个方法。

  啊哈!明白没有?在ispostback(也就是提交)后, 调用了触发一切控件事情的方法。 postdata["__eventtarget"]分明就是我们刚才的点的按钮称号, 然后通过findcontrol失掉该对象, 最后调用raisepostbackevent方法动身该对象的事情。 再往下看详细流程:
文章由女人缩阴有用吗整理,收集辛苦,希望能保留出处。

posted on 2011-05-12 17:47  jiyizhen3721  阅读(154)  评论(0编辑  收藏  举报