全书用通俗易懂、平易近人的语言,讲述ASP.NET技术中最关键的部分――ASP.NET控件与组件的开发细节,从对ASP.NET编程模型的引入到ASP.NET控件最基本的知识,包括呈现内容,属性与持久化,服务端事件与ASP.NET回传,脚本与资源文件的集成以及ASP.NET回调,控件的设计时支持。各个知识均穿插了精巧的小实例,且在各个进阶阶段配备了综合的阶段项目,最后还讲述了一些重点控件的开发,依次是验证控件、模板控件、数据绑定控件、数据源控件、WebParts,最终给予读者一个整体的控件开发的知识体系。本书的目的是以ASP.NET控件开发的讲述来最终促进读者迅速提高对ASP.NET的理解水平,从而提高ASP.NET从业人员的开发水平。\r\n 本书适合有半年以上的ASP.NET开发经验的程序员阅读,同时也可作为大中专院校和相关培训机构的参考教材。
第1章 理解ASP.NET编程模型\r\n 1.1 ASP.NET 运行时模型\r\n 1.2 HTTPMODULE 应用举例\r\n 1.2.1 二级域名COOKIE处理\r\n 1.2.2 Regex UrlMapping\r\n 1.3 HttpHandler应用举例\r\n 1.4 HttpHandlerFACTORY应用举例\r\n 1.5 页面编程模型\r\n 1.6 页面编程模型应用举例\r\n 1.6.1 生成静态缓存页面\r\n 1.6.2 控制页面状态存取\r\n 1.7 本章小结\r\n第2章 呈现内容\r\n 2.1 选择基类\r\n 2.2 System.Web.UI.Control.Render()方法\r\n 2.2.1 Hello world\r\n 2.2.2 相册\r\n 2.2.3 RENDER()是怎样被调用的\r\n 2.3 HTMLTEXTWRITER的两个拍档\r\n 2.4 WEBCONTROL的呈现过程\r\n 2.4.1 继承WEBCONTROL“的相册”控件\r\n 2.5 COMPOSITECONTROL 的呈现过程\r\n 2.5.1 EMAILLNPUT控件\r\n 2.5.2 组合控件如何呈现子控件\r\n 2.6 装饰ATTRIBUTE\r\n 2.7 本章小结\r\n第3章 属性\r\n 3.1 公开控件属性\r\n 3.2 属性的持久化\r\n 3.2.1 视图的持久化\r\n 3.2.2 控件状态\r\n 3.2.3 应用视图状态\r\n 3.2.4 应用控件状态\r\n 3.3 属性在页面源码中的表达方式\r\n 3.3.1 属性在页面源码中的各种表现形式\r\n 3.3.2 处理标签间的内容\r\n 3.3.3 源代码视图控件\r\n 3.4 ISTATEMANAGER与复杂属性的状态持久\r\n 3.4.1 ISTATEMANAGER\r\n 3.4.2 处理集合属性\r\n 3.4.3 表示复杂属性和隐藏属性\r\n 3.5 处理子控件\r\n 3.5.1 CONTROL.ADDPARSEDSUBOBJECT()方法\r\n 3.5.2 CONTROLBUILDER\r\n 3.6 属性细节\r\n 3.7 本章小结\r\n第4章 事件与回传\r\n 4.1 事件与委托\r\n 4.2 ASP.NET中的回传框架\r\n 4.3 数据回传\r\n ……\r\n阶段项目A Composite Numeric UP Down\r\n第5章 脚本与资源集成\r\n第6章 设计时支持\r\n阶段项目B Date Chooser\r\n第7章 验证控件\r\n第8章 模板控件\r\n第9章 数据绑定\r\n第10章 数据源控件\r\n阶段项目C LISTVIEW\r\n第11章 WEB PARTS \r\n第12章 ASP.NET AJAX\r\n第13章 本地化 、许可与保护\r\n第14章 实现WAP控件
谭振林,网名THIN,资深.NET开发人员,高级讲师,企业顾问,浸淫基于ASP.NET的WEB&WAP开发多年,策划多个WEB2.0项目,多次当选微软最有价值专家(MVP),2007年CSDN英雄会受邀专家。
不仅仅是开发控件
作者序
2007年7月,我走进电影院,观看了《变型金刚》电影。在观影的2个小时中,我被一种东西持续感动着,这种东西就是技术的力量。
人类天生就是追求技术的。技术,就是关于方法的知识。
现在的技术人员是幸运的,又不是幸福的。幸运的是,当代技术人员赶上了信息技术产业大革命,技术人员能史无前例地感受技术的强大力量。说当代技术人员又是不幸福的,是因为:在产业革命过程中,其技术革命时期,技术是最关键的,所以早些年国内外都涌现了很多的技术英雄;而在接下来的商务革命时期,管理水平决定企业的成败,这些年,很多优秀技术精英都转型做了管理,做技术反过来好像是比较丢人的事情了;再接下来的平民革命时期,关系管理和模式创新成为最关键的成功要素,MySpace的创业团队用一个月的辛苦创造出年创收2亿美元的网站。因此,在当今“重商轻工”的社会大环境里,技术人员少了几分自信,多了几分迷芒:这碗“青春饭”到底能不能吃一辈子?
特别在最近这几年里,IT从业人员经历了从信息技术产业革命的商务革命时期到平民革命时期转变的阵痛,剧烈而又深刻的社会变革使得大量新的事物一股脑涌现出来。如果你是一个不够努力的技术人员,那么你可能会跟不上时代的脚步,不能理解这场变革的本质,陷入一种迷乱中。比如,你可能不能理解为什么“百万格子”的首页为什么划一万个格子就能卖一百万,而你的网站首页却只能卖一百块,实质上,它是一种创新,而由于这种创新吸引了大家的注意力,所以它就有价值,这是注意力经济原理。你也可能不理解电子商务网站的货物陈列架和传统的超市的货物陈列架之间有什么区别,而这种区别被归纳为流行的“长尾理论”。而维基百科(Wikipedia)利用群体创作的威力迅速打败大名鼎鼎的不列颠百科全书也可能没有给你任何触动。
Web 2.0扑头盖脸地淹过来之后,马上恶补一番JavaScript、CSS,做几个AJAX的小实验,就算是站在了技术潮流的浪尖了吗?如果是这样的话,为什么在AJAX相关书籍热销了整整一年之后,周围却仍没有多少真正掌握Web 2.0的技术人员呢?
所以,我们也许应该多思考一下,怎么样才能成为一个顶尖的技术人员?
在我看来,IT技术人员掌握人类最新的技术,代表最先进生产力,我们的机会始终是最多的。我们要做的是,拿起技术这把倚天剑,真正地掌握好它,即真正地精通一门技术,那么成功就是顺理成章的事了。
社会并不是不尊重技术,只是技术只有精通了,能创新,能真正为社会创造核心价值,它才能发出耀眼的光芒。
本书为谁而写
坦白的说,我从来没有从事过专门的ASP.NET控件研发工作。但是自从我深入研究了ASP.NET框架及其控件的内部机理后,我才可以说我真正掌握了ASP.NET,从此,我就可以随心所欲地使用ASP.NET,实现一般ASP.NET开发人员不能实现的功能,解决一般ASP.NET开发人员不能解决的疑难问题。应该说,正是ASP.NET控件开发知识,促进了我的ASP.NET技能的快速成长。
由此,在我看来ASP.NET控件开发知识对于理解和真正掌握ASP.NET相当重要,我们不仅可以利用控件开发知识实现各种控件,在提高代码复用率,加强项目组件化的同时,展现自己的创造力与才智。而且控件开发知识在一般的ASP.NET日常开发中,也能协助您解决很多疑难问题,帮助您随心所欲地实现自己的设计,因此我说,本书的用处并不仅仅是开发控件,本书内容对所有使用ASP.NET进行开发的程序员和架构师,都有很大价值。
为什么要学习控件开发
管理学家曾仕强说中国人凡事都讲究合理。只有在有一个好理由驱动的时候,人们才能更主动积极地去做好一件事情。
所以,在做一件事情之前,把做这件事的理由先找出来,也许更有方向,更有动力一些。
那么,我们为什么要花时间来学习ASP.NET服务端控件的开发呢?
复用代码
显而易见,组件与控件技术能更好地复用代码,设计良好的组件与控件能极大地提高程序开发过程的效率。利用控件与组件技术,我们可以把自己在开发实践中积累的灵感和经验沉淀起来,以备后用。同时,持续积累自己的控件,可以更好地组织和管理自己的知识。此外,如果有好的创意,加上娴熟的控件开发技术,更可以开发和发布优秀的ASP.NET控件,为整个开发社区贡献自己的智慧和力量。
深入理解ASP.NET框架
控件开发过程本身不同于我们平时的ASP.NET应用程序开发。我们平时的ASP.NET开发一般停留在技术应用层面,而控件开发过程除了是一个现有技术的应用过程,也是一个研发与创建的过程。控件开发的这一特点,决定你在这个过程中必须去深入探索ASP.NET框架及其相关技术的内部细节和实现原理,而这个探索的过程必将促使你更加深刻地理解ASP.NET框架,更加准确地把握ASP.NET技术。可以说,学习ASP.NET控件与组件开发是学习和理解ASP.NET的一种科学而高效的途径。
我能学会控件开发吗
控件开发过程其实是一种科学而高效的ASP.NET学习、研究方法,对于一般的ASP.NET开发人员来说,学习和掌握ASP.NET控件开发的知识和技巧能更大幅度地提升你对ASP.NET的理解,极大地提高你的技术水平。所以我认为学习控件开发:进,可以实现控件,让自己从使用工具的人变成发明工具的人,向整个ASP.NET开发社区展示自己的聪明才智;退,就算不能创造出非常优秀的控件,也可以因此深入理解ASP.NET的内部原理,提高ASP.NET开发水平。
虽然ASP.NET的控件系统有一个非常庞大而复杂的框架,要一次性完整地把握它是不可能的。但是,我们可以把它化整为零,再逐个消化。本书内容正是按一定的顺序逐个分解控件开发的各个方面,并以详细实用的例子向你展示如何应用这些技术,实实在在地帮助你掌握这些知识和技术。
如何阅读本书
离开ASP.NET这个环境去理解ASP.NET控件是没有意义的,所以本书第1章首先探讨了ASP.NET运行时的生命周期。当然,如果您对ASP.NET非常了解,您可以直接跳过本章,阅读后面的章节。
从第2章到第6章依次介绍了ASP.NET控件最基本的知识,包括呈现内容,属性与持久化,服务端事件与ASP.NET回传,脚本与资源文件的集成以及ASP.NET回调,控件的设计时支持。在这些章节中,还穿插了两个阶段项目:第一个在第4章之后,完整地实现了一个组合控件——CompositeNumbericUpDown,这个阶段项目的实验目的是加深对控件呈现、控件复杂属性的持久化管理、事件冒泡机制的理解。
第二个阶段项目在第6章之后,就是一个客户端功能非常强大的DateChooser控件,在实现这个控件时,我们不但回顾了如何组织客户端功能,如何提供强大的设计时支持,还探讨了客户端代码的实现与JQuery JavaScript框架,我觉得对客户端如何实现进行展开是值得的,因为啃了不少JavaScript书本,却仍不知如何去实现一个JavaScript应用的朋友并不少见。
从第7章到第11章则集中介绍ASP.NET 2.0中的某一类控件,依次是验证控件、模板控件、数据绑定控件、数据源控件、WebParts。第10章之后同样加入了一个阶段项目——ListView控件,实战ListView控件是为了将前面三章所学的模板、数据绑定、数据源控件知识有机地组合起来。
第12章专门介绍了ASP.NET AJAX框架,并演示如何扩展ASP.NET AJAX框架,实现AJAX控件与行为,以及AJAX Control Toolkit。
第13章补充了控件的本地化、使用许可与保护控件的相关知识。
第14章则尝试实现一个WAP开发框架,将控件开发话题提升到实现一个框架的高度。
本章的一个特点是示例非常多,基本上每一个知识点都有一个精心设计的实例,这些实例有的具有实用价值,有的实用价值不大,但不管怎么样,它们都不是从MSDN或其他地方抄下来的,它们是与章节内容紧密结合的,通常能有针对性的说明一个知识点,并演示如何使用这个知识点。所以,我希望您能认真阅读这些示例代码,实际运行它们,最好是把它们都做一遍。
本书的三个阶段项目是为了阶段性地巩固多个章节所学的知识,并演示如何综合使用这些知识,我建议您从头到尾把阶段项目A实现一遍,把阶段项目B的服务端代码实现一遍,把阶段项目C遗留的功能实现出来,尝试让ListView成为一个可以实际使用的控件。
感谢
几个月前,我为陈黎夫先生的著作《ASP.NET AJAX程序设计:第2卷》写推荐序时,我呼吁大家不要对国内计算机出版业的发展与逐渐成熟熟视无睹,不要固执地认为国产计算机图书就一定比不过引进图片,现在,我觉得我的呼吁是正确的,中国的计算机图书出版社中不泛杰出者,它们的发展与进步是看得见、摸得着的。
之所以这样说,是因为在与博文视点合作的过程中,我实实在在的感觉到他们就是优秀的计算机出版社的一个代表。他们不仅对读者有深刻的理解,而且他们也懂作者,他们可是“相当的”专业的。
感谢本书的主编孙女士和其他为本书如期面世而努力的编辑们,你们的工作与理解,让我的写作过程变成一段愉悦的旅途。
勘误
由于时间有限和水平有限,本书可能不够全面,不够深入,不够浅出,甚至可能存在一些错误,如果您发现了书中的错误,您可以到下面网址中指出,我们非常感谢您的帮助:
http://.....
谭振林
2007年8月于深圳
附:开发控件时如何调试
不能调试,我们将寸步难行,那么如何调试自己开发的控件呢(特别是设计时的调试)?
在调试控件时,我们需要使用两个Visua
无封面