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


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

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

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

  检查ispostback属性来确定是不是第一次处理该页。

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

  静态设置主控页。

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

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

  假如创立自定义控件, 通常要重写此方法以输入控件的标志。 不过, 假如自定义控件只兼并规范的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-11 16:44  jiyizhen3721  阅读(152)  评论(0编辑  收藏  举报