ASP.NETAJAX编程参考手册
《ASP.NETAJAX编程参考手册》以AJAX为核心阐述对象,介绍了它对JavaScript所做的各种扩展,还介绍了在ASP.NET环境下创建客户端应用所需的一些核心控件。通过大量的实例,《ASP.NETAJAX编程参考手册》详述了AJAX的内部机制,并且紧跟时代潮流,重点描述了如何依靠异步通信机制,更快、更好、更有效地实现客户端和服务器端之间的通信。
版权信息
书 名: ASP.NETAJAX编程参考手册
作 者:(美国)ShahranKhosravi
出版社: 清华大学出版社
出版时间: 2009
ISBN: 9787302194828
开本: 16
定价: 168.00 元
作者简介
ShahramKhosravi,博士。他是一名资深的软件工程师、顾问、作家和讲师。在面向对象的分析、设计和编程方面有十多年的经验。讲授课程包括ASPNET、Web服务、.NET技术、XML技术、C#等。Shahr8m还撰写了多本关于ASP、NET的书,并在微软的MSDN存线文档以及Dr.Dobb’SJournal、asp.neetPRO等杂志上发表技术文章多篇。
译者简介:
刘志忠,博士,毕业于国防科技大学计算机科学与技术专业,现仟解放军理工大学指挥自动化学院教员。主要研究基于Web,E报务的分布式计算技术,精通.NET、Java、C++和VB等程序设计语言,对AJAX和HTML技术也有深入的了解,具有多年程序开发经验,曾参与973、863、国家自然科学基金等科研项目。业余时间以写文章,翻译图书为乐,译著包括《CSS基础教程》等。
编辑推荐
《ASP.NETAJAX编程参考手册(涵盖ASP.NET3.5及2.0)》将为您提供开发ASP.NETAJAX应用所必需的技能和知识。ASP.NETAJAX将ASP.NET/.NETFramework中的服务器端编程技术引入到客户端框架,从而带来了客户端编程的丰富特性。《ASP.NETAJAX编程参考手册(涵盖ASP.NET3.5及2.0)》主要阐述ASP.NETAJAX是如何在客户端模拟这些丰富特性的。《ASP.NETAJAX编程参考手册(涵盖ASP.NET3.5及2.0)》通过大量实例、深入的描述以及代码分析,全面涵盖了ASP.NETAJAX服务器端和客户端框架。书中的所有代码都通过了ASP.NET2.0和ASP.NET3.5的测试。通过《ASP.NETAJAX编程参考手册(涵盖ASP.NET3.5及2.0)》,您将学习到这些框架之间是如何进行协同以满足AJAx应用需求的。
目录
第1章AJAX相关技术1
1.1GoogleSuggest1
1.2XMLHttpRequest3
1.3XML13
1.4JSON17
1.4.1对象17
1.4.2数组17
1.4.3字符串17
1.4.4数字18
1.4.5null、true和false18
1.5ASP.NETAJAX21
1.6安装ASP.NETAJAXExtensions和ASP.NETFutures22
1.7小结22
第2章JavaScript基本类型扩展23
2.1ASP.NETAJAXArray类型扩展23
2.1.1add24
2.1.2addRange24
2.1.3clear25
2.1.4clone25
2.1.5contains26
2.1.6enqueue和dequeue26
2.1.7forEach28
2.1.8indexOf29
2.1.9insert30
2.1.10parse30
2.1.11remove31
2.1.12removeAt31
2.2ASP.NETAJAXBoolean类型扩展32
2.3ASP.NETAJAXDate类型扩展32
2.4ASP.NETAJAXObject类型扩展33
2.5ASP.NETAJAXString类型扩展33
2.5.1endsWith33
2.5.2startsWith34
2.5.3trim34
2.5.4格式化35
2.6ASP.NETAJAXError类型扩展35
2.6.1create36
2.6.2popStackFrame38
2.6.3popStackFrame的内部机理41
2.7小结44
第3章内置的和自定义异常类型45
3.1ASP.NETAJAX内置异常类型45
3.1.1ArgumentException45
3.1.2ArgumentNullException47
3.1.3ArgumentOutOfRangeException49
3.1.4ArgumentTypeException51
3.1.5ArgumentUndefinedException53
3.1.6InvalidOperationException55
3.1.7NotImplementedException56
3.1.8ParameterCountException57
3.2实现自定义异常类型59
3.2.1实现自定义异常类型的流程59
3.2.2使用流程60
3.2.3clickCallback63
3.2.4validateInput64
3.3小结64
第4章JavaScript面向对象编程和类型反射扩展65
4.1JavaScript函数65
4.2JavaScript类66
4.3Type67
4.4registerClass68
4.5getName70
4.6isClass71
4.7registerNamespace72
4.8isNamespace74
4.9registerInterface75
4.10getInterfaces78
4.11isInterface80
4.12继承81
4.13getBaseType84
4.14initializeBase87
4.15resolveInheritance87
4.16callBaseMethod88
4.17getBaseMethod93
4.18implementsInterface96
4.19inheritsFrom100
4.20isImplementedBy102
4.21getRootNamespaces104
4.22parse106
4.23registerEnum108
4.24isEnum109
4.25isFlags110
4.26小结110
第5章事件编程模型扩展111
5.1事件编程模型111
5.1.1Sys.EventArgs112
5.1.2Sys.CancelEventArgs112
5.1.3EventHandlerList112
5.2使用事件编程116
5.2.1基本类117
5.2.2事件122
5.2.3ShoppingCart130
5.2.4添加一个事件处理程序134
5.2.5移除一个事件处理程序134
5.3小结135
第6章DOM扩展136
6.1DomElement136
6.1.1getElementById136
6.1.2addCssClass141
6.1.3containsCssClass141
6.1.4removeCssClass141
6.1.5toggleCssClass143
6.1.6getLocation144
6.1.7setLocation145
6.1.8getBounds147
6.2MouseButton148
6.3Key149
6.4委托149
6.4.1Namespace155
6.4.2Mover155
6.4.3TextProvider155
6.4.4ImageProvider156
6.5DomEvent156
6.5.1构造函数157
6.5.2静态方法159
6.5.3实例方法166
6.6使用DomEvent类170
6.6.1Mover176
6.6.2TableProvider180
6.7小结181
第7章组件开发基础设施182
7.1接口182
7.1.1IDisposable183
7.1.2INotifyDisposing186
7.1.3INotifyPropertyChange189
7.2组件194
7.3IContainer196
7.4应用197
7.4.1addComponent198
7.4.2removeComponent199
7.4.3getComponents199
7.4.4findComponent200
7.5应用生命周期201
7.6组件生命周期205
7.7继续应用生命周期之旅209
7.7.1endCreateComponents209
7.7.2raiseLoad211
7.7.3应用生命周期小结212
7.8应用层事件213
7.8.1Init213
7.8.2load214
7.8.3unload214
7.9可丢弃对象214
7.10使用Application对象和Component基类217
7.10.1dispose217
7.10.2initialize220
7.10.3id222
7.10.4raisePropertyChanged222
7.10.5get_events223
7.10.6INotifyPropertyChange224
7.10.7INotifyDisposing224
7.11小结230
第8章开发客户端控件231
8.1Control231
8.1.1定义231
8.1.2get_element232
8.1.3get_id233
8.1.4set_id233
8.1.5set_parent233
8.1.6get_parent234
8.1.7get_visibilityMode234
8.1.8get_visible235
8.1.9set_visibilityMode235
8.1.10set_visible236
8.1.11addCssClass236
8.1.12removeCssClass236
8.1.13toggleCssClass237
8.1.14dispose237
8.1.15onBubbleEvent237
8.1.16raiseBubbleEvent238
8.2开发自定义客户端控件238
8.3客户端Label控件239
8.3.1构造函数239
8.3.2htmlEncode239
8.3.3text240
8.3.4prototype241
8.3.5descriptor241
8.4使用Label客户端控件242
8.5客户端Image控件244
8.5.1构造函数244
8.5.2prototype244
8.5.3imageURL245
8.5.4width245
8.5.5height246
8.5.6alternateText246
8.6使用Image客户端控件246
8.7扩展客户端Image控件248
8.7.1构造函数251
8.7.2prototype252
8.7.3imageURL252
8.7.4mouseOverImageURL253
8.7.5mouseOverCallback253
8.7.6mouseOutCallback254
8.7.7Duration254
8.7.8transition255
8.7.9Transition枚举类型255
8.7.10initialize256
8.7.11dispose256
8.8使用客户端Image2控件257
8.9HyperLink客户端控件259
8.9.1构造函数259
8.9.2prototype259
8.9.3navigateURL259
8.9.4initialize260
8.9.5add_click260
8.9.6remove_click261
8.9.7_onClick261
8.9.8dispose261
8.9.9descriptor262
8.10使用HyperLink客户端控件262
8.11小结264
第9章事件冒泡机制及客户端Button控件265
9.1CommandEventArgs265
9.2客户端Button控件266
9.2.1构造函数267
9.2.2prototype属性267
9.2.3argument属性267
9.2.4command属性268
9.2.5initialize方法268
9.2.6add_click方法269
9.2.7_onClick269
9.2.8dispose270
9.2.9descriptor270
9.3使用客户端Button控件271
9.3.1捕获一个冒泡的事件271
9.3.2冒泡一个事件276
9.4小结286
第10章类型描述扩展287
10.1TypeDescriptor287
10.1.1构造函数288
10.1.2getTypeDescriptor304
10.1.3getProperty308
10.1.4getAttribute310
10.1.5setProperty311
10.1.6invokeMethod315
10.1.7getPropertyType316
10.2使用ASP.NETAJAX类型描述能力317
10.2.1StringBuilder318
10.2.2CustomTable321
10.3动态注入元数据信息329
10.3.1addProperty329
10.3.2addMethod330
10.3.3addEvent331
10.3.4addAttribute332
10.4ICustomTypeDescriptor332
10.5小结334
第11章数据类335
11.1IData335
11.2DataColumn336
11.3DataRow339
11.3.1构造函数339
11.3.2descriptor340
11.3.3ICustomTypeDescriptor341
11.3.4Owner345
11.3.5INotifyPropertyChange346
11.4DataTable347
11.4.1构造函数347
11.4.2IData349
11.4.3Descriptor356
11.4.4INotifyPropertyChange357
11.4.5InotifyCollectionChanged359
11.4.6createRow362
11.4.7getChanges363
11.4.8getColumn364
11.4.9raiseRowChanged365
11.4.10parseFromJson365
11.5使用DataColumn、DataRow和DataTable367
11.6小结376
第12章客户-服务器通信377
12.1WebRequest377
12.1.1构造函数377
12.1.2目标URL378
12.1.3HTTP动作378
12.1.4请求体378
12.1.5超时379
12.1.6Web请求执行器379
12.1.7请求头380
12.1.8completed事件380
12.1.9调用一个Web请求381
12.2WebRequestExecutor382
12.2.1构造函数382
12.2.2WebRequest382
12.2.3get_started383
12.2.4get_responseAvailable383
12.2.5get_timedOut383
12.2.6get_aborted384
12.2.7get_responseData384
12.2.8get_statusCode384
12.2.9get_statusText384
12.2.10get_xml384
12.2.11get_object385
12.2.12executeRequest385
12.2.13abort385
12.2.14getResponseHeader385
12.2.15getAllResponseHeaders386
12.3WebRequestManager386
12.3.1构造函数386
12.3.2默认超时387
12.3.3默认执行器类型387
12.3.4事件387
12.3.5执行一个Web请求389
12.3.6NetworkRequestEventArgs390
12.4XMLHttpRequest391
12.5XMLDOM391
12.6XMLHttpExecutor392
12.6.1构造函数392
12.6.2get_timedOut395
12.6.3get_started395
12.6.4get_responseAvailable395
12.6.5get_aborted396
12.6.6执行请求396
12.6.7getResponseHeader398
12.6.8getAllResponseHeaders399
12.6.9get_responseData399
12.6.10get_statusCode400
12.6.11get_statusText400
12.6.12get_xml400
12.6.13abort401
12.7使用WebRequest、WebRequestManager和XMLHttpExecutor40212.8小结422
第13章通过SOAP消息使用Web服务423
13.1构建Web服务423
13.2WSDL文档424
13.2.1参数的名称、类型和顺序426
13.2.2返回值的类型和顺序426
13.2.3方法描述427
13.2.4描述访问方法的通信协议427
13.2.5指定访问方法的站点428
13.2.6指定方法类429
13.3SOAP消息429
13.4小结441
第14章通过JSON消息使用Web服务442
14.1WebServiceProxy442
14.1.1Timeout442
14.1.2默认成功回调函数442
14.1.3默认失败回调函数443
14.1.4路径443
14.1.5调用一个Web方法443
14.2使用WebServiceProxy454
14.3WebServiceError457
14.4使用WebServiceError460
14.5调用页面方法464
14.6调用自定义方法466
14.7底层机制472
14.7.1ScriptHandlerFactory472
14.7.2RestHandlerFactory476
14.7.3RestHandler478
14.7.4HandlerWrapper483
14.7.5页面方法揭秘484
14.7.6Web服务桥揭秘489
14.7.7使用这些复制品492
14.8小结494
第15章代理类495
15.1什么是代理?495
15.2代理类497
15.2.1和Web服务相关的代理类497
15.2.2和页面方法相关的代理类502
15.2.3和自定义类相关的代理类504
15.3自动代理类生成504
15.3.1声明式方法505
15.3.2命令式方法513
15.3.3父/子页面516
15.4底层机制518
15.4.1ScriptManager518
15.4.2ServiceReference522
15.4.3ClientProxyGenerator524
15.4.4RestClientProxyHandler540
15.5使用这些复制品541
15.6小结548
第16章行为549
16.1什么是行为?549
16.2Behavior类550
16.2.1Properties556
16.2.2实例方法559
16.2.3静态方法561
16.3ClickBehavior562
16.3.1descriptor563
16.3.2click事件563
16.3.3initialize564
16.3.4使用ClickBehavior564
16.4ASP.NETAJAX控件工具箱566
16.4.1BehaviorBase566
16.4.2TextBoxWatermarkBehavior571
16.5小结588
第17章服务器端script控件和extender控件589
17.1为什么需要服务器端script和extender控件589
17.2服务器extender控件590
17.2.1IExtenderControl591
17.2.2ExtenderControl591
17.3服务器script控件594
17.3.1IScriptControl594
17.3.2ScriptControl595
17.4ScriptDescriptor597
17.4.1ScriptComponentDescriptor598
17.4.2ScriptControlDescriptor609
17.4.3ScriptBehaviorDescriptor610
17.5ScriptReference611
17.6ScriptReferenceCollection612
17.7ScriptManager613
17.7.1Scripts618
17.7.2LoadScriptsBeforeUI618
17.7.3ScriptControls618
17.7.4RegisterScriptControl618
17.7.5ExtenderControls618
17.7.6RegisterExtenderControl619
17.7.7GetCurrent619
17.7.8OnInit619
17.7.9Page_PreRenderComplete619
17.7.10CollectScripts620
17.7.11AddScriptReferencesFor-ScriptControls621
17.7.12针对extender控件的RegisterScriptDescriptors622
17.8ResolveScriptReference事件623
17.9将所有综合在一起625
17.10开发一个自定义的服务器端extender控件626
17.10.1WatermarkText630
17.10.2WatermarkCssClass630
17.10.3ClientState631
17.10.4ClientStateFieldID631
17.10.5CreateClientStateField631
17.10.6BehaviorID631
17.10.7GetScriptReferences631
17.10.8GetScriptDescriptors631
17.10.9OnInit633
17.10.10Page_PreLoad633
17.10.11OnLoad634
17.10.12OnPreRender635
17.10.13Render636
17.10.14使用服务器端extender控件637
17.11开发一个script控件638
17.11.1PreRender641
17.11.2Render642
17.11.3使用服务器端script控件642
17.12服务器端script控件与服务器端extender控件643
17.13小结643
第18章Web服务桥和转换器644
18.1AmazonWeb服务644
18.2开发支持Web服务桥的服务器端script控件650
18.2.1AspNetAjaxAmazonSearch651
18.2.2AmazonSearchScriptControl658
18.2.3HtmlGenerator665
18.2.4HtmlGeneratorScriptControl669
18.2.5使用这些组件676
18.3转换器678
18.4使用转换器687
18.4.1XmlBridgeTransformer687
18.4.2XsltBridgeTransformer707
18.5小结714
第19章UpdatePanel和ScriptManager715
19.1让异步的局部页面更新成为可能715
19.2条件更新717
19.2.1子元素作为触发器719
19.2.2一个UpdatePanel包含在另一个UpdatePanel内720
19.2.3使用触发器729
19.2.4命令式更新731
19.3开发支持局部更新的自定义组合服务器控件733
19.3.1BaseMasterDetailControl734
19.3.2BaseMasterDetailControl2753
19.4小结756
第20章在用户控件和自定义控件中使用UpdatePanel757
20.1MasterDetailControl757
20.1.1CreateBaseDataBoundControl-Master759
20.1.2RegisterMasterEventHandlers759
20.1.3属性761
20.2在Web页面中使用MasterDetailControl761
20.3MasterDetailControl2765
20.3.1CreateBaseDataBoundControl-Master767
20.3.2RegisterMasterEventHandlers767
20.3.3Master_SelectedIndexChanged767
20.3.4Master_DataBound767
20.3.5属性768
20.4使用MasterDetailControl2768
20.5MasterDetailControl3770
20.6使用MasterDetailControl3771
20.7MasterDetailControl4773
20.8开发支持局部页面更新的数据控件域773
20.8.1扩展BoundField774
20.8.2覆盖InitializeDataCell778
20.8.3处理DataBound事件779
20.8.4从单元格中抽取值780
20.8.5外观属性780
20.8.6使用MasterDetailField780
20.9开发支持局部呈现的用户控件784
20.9.1显示所有消息794
20.9.2显示某消息的细节795
20.9.3删除一条消息796
20.9.4更新一条消息797
20.9.5回复一个消息797
20.9.6开始一个新线索798
20.10小结800
第21章页面生命周期和异步的局部页面呈现801
21.1处理一个请求801
21.2Page生命周期804
21.3第一次访问支持局部页面呈现的Web页面806
21.4InitRecursive806
21.4.1ScriptManager的OnInit方法807
21.4.2UpdatePanel的OnInit方法814
21.4.3模板化控件819
21.5LoadRecursive826
21.6Rendering847
21.6.1ScriptManager的Render方法848
21.6.2UpdatePanel的Render方法853
21.7小结855
第22章ASP.NETAJAX客户端PageRequestManager857
22.1实例化和初始化客户端PageRequestManager858
22.1.1客户端PageRequestManager的getInstance方法859
22.1.2客户端PageRequestManager类的构造函数860
22.1.3客户端PageRequestManager的_initializeInternal方法862
22.1.4_updateControls867
22.1.5客户端PageRequestManager的_pageLoadedInitialLoad方法871
22.1.6客户端PageRequestManager的_pageLoaded方法871
22.2pageLoaded事件873
22.3生成一个异步页面回传889
22.3.1辅助方法889
22.3.2_doPostBack894
22.3.3_onFormSubmit898
22.4initializeRequest事件906
22.5beginRequest事件913
22.6小结918
第23章异步局部页面呈现:服务器端处理919
23.1RetrievePostData919
23.2LoadScrollPosition922
23.3InitRecursive924
23.3.1PageRequestManager的IsAsyncPostBackRequest方法924
23.3.2PageRequestManager的OnInit方法925
23.4LoadPostData生命周期阶段925
23.4.1UpdatePanel929
23.4.2ScriptManager929
23.4.3PageRequestManager的LoadPostData方法930
23.5RaisePostDataChangedEvent生命周期阶段932
23.6PreRender生命周期阶段933
23.7Rendering生命周期阶段934
23.7.1PageRequestManager的编码方法935
23.7.2PageRequestManager的RenderPageCallback方法936
23.8服务器响应969
23.9小结981
第24章异步局部页面呈现:客户端处理982
24.1服务器响应文本的到达982
24.2PageRequestManager的_updatePanel方法1005
24.3PageRequestManager的registerDisposeScript方法1006
24.4_destroyTree方法1007
24.5_ScriptLoader类1008
24.5.1readLoadedScripts1008
24.5.2getInstance方法1009
24.5.3queueScriptBlock方法1009
24.5.4queueCustomScriptTag方法1009
24.5.5isScriptLoaded方法1010
24.5.6_getLoadedScript方法1010
24.5.7queueScriptReference方法1010
24.5.8loadScripts方法1011
24.5.9_loadScriptsInternal方法1012
24.5.10_createScriptElement方法1014
24.5.11_ScriptLoader类的构造函数1014
24.5.12_scriptLoaderHandler方法1014
24.6_ScriptLoaderTask类1015
24.6.1_ScriptLoaderTask类的构造函数1015
24.6.2execute方法1016
24.6.3_scriptLoadHandler方法1017
24.7_scriptsLoadComplete方法1017
24.8_endPostBack方法1020
24.9pageLoading事件1025
24.10pageLoaded事件1043
24.11endRequest事件1045
24.12小结1061
附录AXML脚本1062
附录B绑定1104
附录C动作1116
附录D数据控件1129
附录E模板化控件1150
附录FListView1173
……