ASP.NET 2.0服务器控件与组件开发高级编程

ASP.NET 2.0服务器控件与组件开发高级编程 pdf epub mobi txt 电子书 下载 2026

出版者:人民邮电
作者:库斯拉维
出品人:
页数:1145
译者:
出版时间:2007-6
价格:148.00元
装帧:
isbn号码:9787115159908
丛书系列:
图书标签:
  • asp.net
  • C
  • #服务器控件开发
  • .net
  • 编程开发
  • 控件
  • 网页
  • 网站
  • ASP
  • NET
  • 2
  • 0
  • 服务器控件
  • 组件开发
  • 高级编程
  • 网页开发
  • 控件编程
  • 微软技术
  • 软件开发
想要找书就要到 本本书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

《ASP.NET 2.0服务器控件与组件开发高级编程》是一本专门介绍服务器控件和组件的开发与使用的图书。全书共分为33章,分别介绍了Ajax控件和组件、ASP.NET 2.0 Web部件控件、ASP.NET 2.0安全、ASP.NET 2.0表格式和分层式数据源控件、ASP.NET 2.0表格式数据绑定控件、自定义架构导入扩展和ISerializable接口、基于提供程序的服务等内容。

深入解析ASP.NET Web Forms的精髓:构建企业级Web应用的终极指南 本书并非聚焦于ASP.NET 2.0特定版本的服务器控件与组件的开发细节,而是致力于为开发者提供一套理解和运用ASP.NET Web Forms框架构建强大、可维护、高性能企业级Web应用的系统性知识和实战技巧。我们将超越具体控件的表面,深入探讨Web Forms背后的核心概念、设计模式以及最佳实践,帮助您成为一名真正精通Web Forms开发的架构师。 您将学习到的核心内容: Web Forms生命周期的深度剖析: 理解页面请求的整个生命周期,从初始加载到回发,以及每个阶段的关键事件和处理机制。我们将详细阐述ViewState、Postback、Callback的工作原理,以及如何利用它们有效地管理页面状态和实现动态交互,避免常见的性能陷阱。 数据访问的架构与优化: 探索多种数据访问策略,包括ADO.NET、Entity Framework等ORM框架的使用。重点讲解如何设计高效的数据访问层,实现数据绑定、数据校验、数据分页、数据排序等功能,并深入分析数据访问的性能优化技巧,如连接池管理、查询优化、缓存策略等,确保您的应用在处理大量数据时依然能够提供流畅的用户体验。 用户界面设计的进阶: 学习如何运用Master Pages、Themes、CSS Styling、Client-side Scripting(JavaScript)等技术,构建美观、一致、响应式的用户界面。我们将探讨用户控件(User Controls)和自定义服务器控件(Custom Server Controls)的开发,帮助您创建可重用、模块化的UI组件,提升开发效率和代码复用性。 事件驱动编程模型: 深入理解ASP.NET Web Forms的事件驱动模型,学习如何处理各种用户交互事件,实现复杂的业务逻辑。我们将讲解事件处理程序的编写、事件参数的传递,以及如何利用委托和事件实现更灵活的代码组织。 状态管理策略: 除了ViewState,我们还将深入探讨Session State、Application State、Cookie、Query String等不同的状态管理机制,分析它们的优缺点,并指导您根据实际场景选择最合适的状态管理方案,确保用户会话的连续性和数据的可靠性。 安全性基础与实践: 了解ASP.NET Web Forms提供的安全特性,包括身份验证(Authentication)、授权(Authorization)、输入验证、防止跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等。我们将提供实用的安全编码指南和防护措施,帮助您构建健壮、安全的Web应用程序。 性能调优与可伸缩性: 学习识别和解决Web应用程序性能瓶颈的方法,包括代码优化、缓存策略(页面缓存、数据缓存、片段缓存)、HTTP压缩、CDN集成等。我们将探讨如何设计可伸缩的Web应用程序架构,以应对用户量的增长和更高的并发访问。 错误处理与日志记录: 掌握有效的错误处理机制,包括try-catch块、Custom Error Pages、Exception Handling Block等。学习如何实现全面的日志记录,以便于诊断问题和监控应用程序的运行状况。 Web服务与API集成: 探索如何利用ASP.NET Web Forms构建和消费Web服务(如SOAP、RESTful API),实现与其他系统和服务的无缝集成,扩展应用程序的功能。 部署与维护: 了解ASP.NET Web Forms应用程序的部署过程,包括IIS配置、应用程序池管理、虚拟目录设置等。同时,我们将提供维护和监控应用程序的实用建议。 本书的独特价值: 本书的目标是帮助您从“会用”ASP.NET Web Forms的控件,提升到“精通”Web Forms框架的本质。我们不提供简单的“how-to”指南,而是通过深入的原理分析、大量的代码示例和贴近实际的场景讨论,帮助您建立起扎实的理论基础和丰富的实践经验。无论您是初学者希望快速入门,还是有经验的开发者希望进一步提升技能,本书都将是您不可或缺的参考。我们将引导您掌握构建高性能、高可用、安全的企业级Web应用程序的关键技术,让您在Web开发领域脱颖而出。

作者简介

目录信息

第1章  ASP.NET 2.0框架...... 1
 
1.1  请求过程...... 1
 
1.2  为什么开发自定义组件...... 4
1.2.1  数据源控件...... 5
1.2.2  角色管理模块和主体...... 5
1.2.3  角色提供程序...... 6
1.2.4  成员资格提供程序...... 6
1.2.5  自定义XML Web服务和客户端...... 6
1.2.6  开发Ajax控件和组件...... 7
1.2.7  开发Web部件控件...... 7
1.2.8  开发自定义数据字段...... 7
1.2.9  开发自定义HTTP处理程序和模块...... 8
1.2.10  开发自定义的基于提供程序的服务...... 8
1.3  小结...... 8
第2章  开发简单的自定义控件和用户控件...... 9
2.1  隐藏信息...... 9
2.2  部署自定义控件...... 14
2.3  在Web页面中使用自定义控件...... 15
2.4  为自定义控件添加属性...... 16
2.5  为自定义控件添加设计时属性...... 19
2.5.1  属性(Property)层次属性(Attribute)...... 19
2.5.2  类层次属性(Attribute)...... 20
2.5.3  程序集层次属性(Attribute)...... 21
2.6  将自定义控件添加到Visual Studio工具箱...... 21
2.7  与HtmlTextWriter相关的枚举...... 22
2.8  状态管理...... 27
2.9  用户控件...... 30
2.9.1  使用用户控件...... 32
2.9.2  为用户控件添加属性...... 33
2.9.3  为用户控件添加方法...... 35
2.9.4  内部揭秘...... 37
2.10  小结...... 38
第3章  开发自定义控件样式...... 39
3.1  Style类...... 39
3.2  WebControl类...... 40
3.2.1  重写Render方法...... 45
3.2.2  TagKey属性...... 45
3.2.3  RenderBeginTag方法...... 45
3.2.4  AddAttributesToRender方法...... 46
3.2.5  RenderContents方法...... 50
3.2.6  RenderEndTag方法...... 50
3.3  继承WebControl类...... 51
3.4  开发自定义Style类...... 56
3.5  使用自定义Style类...... 60
3.6  小结...... 62
第4章  开发自定义控件事件...... 63
4.1  事件介绍...... 63
4.2  .NET事件设计模式...... 64
4.2.1  事件数据和事件委托类...... 64
4.2.2  引发自定义控件事件...... 66
4.3  事件优化...... 68
4.4  回传...... 70
4.4.1  C#接口实现模式...... 73
4.4.2  回传事件...... 74
4.4.3  回传数据...... 74
4.5  页面生命周期...... 84
4.6  小结...... 87
第5章  开发自定义复合控件...... 89
5.1  再次修改CreditCardForm6... 89
5.1.1  呈现HTML... 89
5.1.2  回传功能...... 94
5.2  创建复合控件...... 96
5.2.1  继承CompositeControl类...... 97
5.2.2  选定子控件...... 97
5.2.3  选定布局...... 97
5.2.4  实现自定义容器控件...... 98
5.2.5  创建容器控件...... 99
5.2.6  创建容器控件的子控件...... 100
5.2.7  为容器控件应用样式...... 103
5.2.8  将容器控件添加到复合控件...... 104
5.2.9  呈现容器控件...... 104
5.2.10  CreateChildControls方法:一站式构建子控件...... 105
5.2.11  TagKey属性...... 107
5.2.12  CreateControlStyle方法...... 107
5.2.13  公开样式属性...... 108
5.2.14  RenderContents方法...... 108
5.2.15  Label属性...... 110
5.2.16  事件冒泡...... 112
5.2.17  自定义控件从CompositeControl继承了什么...... 116
5.2.18  重写Controls集合...... 116
5.2.19  INamingContainer接口...... 117
5.3  小结...... 118
第6章  开发自定义模板控件...... 119
6.1  自定义容器控件内容...... 119
6.2  TemplatedCreditCardForm控件...... 121
6.3  在ASP.NET页面中使用模板...... 123
6.4  模板内幕...... 125
6.5  数据绑定表达式...... 128
6.6  数据绑定表达式内幕...... 133
6.7  默认模板...... 135
6.8  小结...... 144
第7章  开发包含复杂属性的自定义控件...... 145
7.1  容器控件的样式属性...... 145
7.2  自定义容器控件外观...... 146
7.3  状态管理...... 148
7.4  实现IStateManager接口的类型...... 150
7.4.1  DefaultTemplateManager类...... 151
7.4.2  TemplatedCreditCardForm3... 156
7.5  不实现IStateManager接口的类型...... 162
7.5.1  TypeConverter类...... 162
7.5.2  DefaultTemplateManager2类...... 163
7.5.3  DefaultTemplateManager2Converter类...... 164
7.5.4  使用转换器标记DefaultTemplateManager2类...... 167
7.5.5  使用不实现IStateManager接口的类...... 167
7.5.6  为什么需要使用TypeDescriptor.. 170
7.6  容器控件样式的状态管理...... 171
7.6.1  声明属性...... 171
7.6.2  TrackViewState方法...... 173
7.6.3  SaveViewState方法...... 174
7.6.4  LoadViewState方法...... 175
7.7  声明持久性...... 176
7.7.1  简单属性...... 176
7.7.2  复杂属性(连字符声明持久性)...... 177
7.7.3  复杂属性(内部属性声明持久性)...... 179
7.8  小结...... 181
第8章  ASP.NET请求处理框架...... 183
8.1  请求过程...... 183
8.2  HTTP模块...... 186
8.3  HTTP处理程序...... 187
8.4  HTTP处理程序工厂...... 188
8.5  控件生成器...... 188
8.6  开发自定义HTTP模块...... 195
8.7  注册自定义HTTP模块...... 198
8.8  开发自定义HTTP处理程序工厂...... 198
8.9  开发自定义HTTP处理程序...... 200
8.9.1  RSS... 200
8.9.2  RssHandler.. 201
8.9.3  注册自定义HTTP处理程序...... 204
8.10  开发自定义控件生成器...... 206
8.10.1  开发自定义控件生成器CompositeCreditCardForm2Builder.. 209
8.10.2  开发自定义控件CompositeCreditCardForm2... 210
8.11  小结...... 215
第9章  数据绑定...... 217
9.1  CustomTable控件...... 217
9.2  设置数据源...... 218
9.3  重写CreateChildControls方法...... 219
9.4  重写DataBind方法...... 221
9.5  创建控件层次...... 222
9.5.1  DataControlField类...... 224
9.5.2  CreateFields方法...... 225
9.5.3  CreateHeaderRow方法...... 227
9.5.4  CreateBodyRow方法...... 228
9.5.5  CachePrimaryKey方法...... 233
9.5.6  CreatePagerRow方法...... 234
9.6  重写CreateControlStyle属方法...... 235
9.7  实现CustomTable事件...... 236
9.8  重写OnBubbleEvent. 237
9.9  CustomTableRow类...... 238
9.10  CustomTableRowCollection类...... 240
9.11  子控件样式...... 241
9.12  重写Render方法...... 242
9.13  状态管理...... 244
9.13.1  TrackViewState方法...... 244
9.13.2  SaveViewState方法...... 245
9.13.3  LoadViewState方法...... 246
9.14  在页面中使用CustomTable控件...... 248
9.15  CustomTable控件的缺点...... 249
9.16  小结...... 249
第10章  XML Web服务...... 251
10.1  开发和使用XML Web服务...... 251
10.2  添加引用按钮背后的秘密...... 254
10.3  WSDL文档...... 257
10.3.1  参数的名称、类型和顺序...... 259
10.3.2  返回值的类型和顺序...... 259
10.3.3  描述方法...... 260
10.3.4  描述访问XML Web服务方法的通信协议...... 261
10.3.5  为方法访问设置站点...... 262
10.3.6  设置方法的类...... 262
10.4  XmlWebServiceMethodInvoker类...... 262
10.4.1  以编程方式下载WSDL文档...... 263
10.4.2  根据WSDL文档反序列化一个.NET对象...... 264
10.4.3  为代理类生成代码...... 265
10.4.4  Import方法背后的秘密...... 266
10.4.5  编译代理类代码...... 269
10.4.6  创建代理类实例...... 270
10.4.7  调用代理类实例中的特定方法...... 270
10.4.8  总结:The InvokeXmlWebServiceMethod方法...... 274
10.5  如何使用XmlWebServiceMethodInvoker.. 275
10.6  缓存编译后的代理类...... 277
10.6.1  缓存相关属性...... 278
10.6.2  CompileCodeForProxyClass方法...... 278
10.6.3  InvokeXmlWebServiceMethod方法...... 280
10.6.4  使用缓存功能...... 281
10.7  开发XML Web服务自定义控件...... 284
10.8  XmlWebServiceResolver组件...... 286
10.8.1  XMLResolver类...... 286
10.8.2  GetEntity方法...... 290
10.9  小结...... 294
第11章  实现架构导入扩展和ISerializable接口...... 295
11.1  实现IXmlSerializable接口...... 295
11.1.1  实现服务器端组件...... 296
11.1.2  开发客户端组件...... 301
11.2  开发自定义架构导入扩展...... 303
11.2.1  使用喜欢的语言编写代码...... 305
11.2.2  CodeDom方法...... 305
11.3  注册自定义架构导入扩展...... 319
11.4  以块化方式发送和接收数据...... 321
11.4.1  BookContent类...... 321
11.4.2  ForumBook类...... 324
11.4.3  自定义架构导入扩展...... 325
11.5  XmlWebServiceMethodInvoker的可扩展能力...... 326
11.6  小结...... 326
第12章  理解ASP.NET 2.0表格式数据源控件模型...... 327
12.1  为什么需要ASP.NET 2.0数据源控件模型...... 327
12.1.1  获取数据...... 329
12.1.2  Update事件...... 330
12.2  ASP.NET 2.0数据源控件模型...... 332
12.3  AS P.NET 2.0表格式数据源控件模型...... 333
12.3.1  IDataSource接口...... 333
12.3.2  DataSourceControl类背后的秘密...... 335
12.3.3  继承DataSourceControl基类...... 336
12.3.4  DataSourceView类...... 338
12.3.5  Delete方法...... 349
12.3.6  Update方法...... 353
12.3.7  Insert方法...... 357
12.3.8  状态管理...... 361
12.4  小结...... 362
第13章  ASP.NET 2.0数据源控件参数模型...... 363
13.1  Parameters类...... 363
13.2  Parameter类...... 366
13.2.1  OnParameterChanged方法...... 366
13.2.2  SaveCurrentValue方法...... 367
13.2.3  Evaluate方法...... 368
13.2.4  CookieParameter组件...... 368
13.2.5  ControlParameter组件...... 369
13.3  ParameterCollection类...... 371
13.3.1  ParametersChanged事件...... 371
13.3.2  OnInsert方法...... 372
13.3.3  GetValues方法...... 372
13.3.4  UpdateValues方法...... 374
13.4  自动调用GetValues和UpdateValues方法...... 374
13.4.1  ParameterCollection类型属性...... 374
13.4.2  OnInit和Page_LoadComplete方法...... 376
13.4.3  ExecuteSelect方法...... 377
13.4.4  ExecuteDelete方法...... 377
13.4.5  ExecuteUpdate方法...... 379
13.4.6  ExecuteInsert方法...... 381
13.5  综合应用...... 383
13.6  开发自定义参数...... 385
13.6.1  XmlWebServiceParameter组件...... 385
13.6.2  ObjectParameter组件...... 389
13.6.3  ClientParameter组件...... 392
13.7  小结...... 397
第14章  开发ASP.NET 2.0自定义表格式数据源控件...... 399
14.1  XmlWebServiceMethodInvoker组件...... 399
14.2  DataSourceControl类...... 401
14.3  DataSourceView类...... 402
14.3.1  ExecuteSelect方法...... 403
14.3.2  ExecuteUpdate方法...... 415
14.3.3  ExecuteInsert方法...... 421
14.3.4  ExecuteDelete方法...... 425
14.4  RetrieveMethodArgumentNamesAndValues方法...... 428
14.5  状态管理...... 430
14.6  小结...... 432
第15章  理解ASP.NET 2.0分层式数据源控件模型...... 433
15.1  IHierarchicalDataSource接口...... 434
15.2  HierarchicalDataSourceControl类...... 435
15.3  HierarchicalDataSourceView类...... 437
15.4  IHierarchyData接口...... 440
15.5  IHierarchicalEnumerable接口...... 441
15.5.1  XmlHierarchyData类...... 444
15.5.2  XmlHierarchicalEnumerable类...... 450
15.5.3  XmlHierarchyDataPropertyDescriptor类...... 451
15.5.4  ICustomTypeDescriptor接口...... 453
15.5.5  XmlHierarchicalDataSourceView.... 455
15.6  小结...... 456
第16章  开发ASP.NET 2.0自定义分层式数据源控件...... 457
16.1  CustomSqlDataSource控件...... 457
16.2  SqlHierarchyDataPropertyDescriptor类...... 463
16.3  SqlHierarchyData类...... 466
16.3.1  构造函数...... 466
16.3.2  实现HasChildren属性...... 467
16.3.3  实现Type属性...... 467
16.4  SqlHierarchicalEnumerable类...... 469
16.5  SqlHierarchicalDataSourceView类...... 471
16.6  小结...... 472
第17章  理解ASP.NET 2.0表格式数据绑定控件模型...... 473
17.1  本章概述...... 473
17.2  ASP.NET 1.x数据绑定控件模型...... 475
17.2.1  RetrieveData方法...... 475
17.2.2  重写DataBind方法...... 476
17.2.3  处理第3个数据绑定任务...... 476
17.3  BaseDataBoundControl类...... 477
17.3.1  自动调用DataBind方法...... 477
17.3.2  第一个和第二个数据绑定任务...... 478
17.3.3  第3个数据绑定任务...... 478
17.4  开发继承自BaseDataBoundControl的自定义数据绑定控件...... 480
17.4.1  处理Load事件...... 481
17.4.2  重写PerformSelect方法...... 481
17.4.3  以声明方式编程而不编写代码...... 483
17.4.4  CustomTable2控件的不足...... 484
17.5  DataBoundControl类...... 484
17.5.1  GetDataSource方法...... 485
17.5.2  GetData方法...... 486
17.5.3  重写BaseDataBoundControl的抽象方法...... 486
17.6  开发继承自DataBoundControl的自定义数据绑定控件...... 490
17.6.1  重写CreateDataSourceSelectArguments方法...... 490
17.6.2  重写PerformDataBinding方法...... 492
17.6.3  UpdateCallback方法...... 492
17.6.4  DeleteCallback方法...... 494
17.6.5  以声明方式实现针对未知数据的无代码编程...... 495
17.7  CompositeDataBoundControl类...... 496
17.7.1  重写PerformDataBinding方法...... 497
17.7.2  重写DataBind方法...... 498
17.7.3  重写CreateChildControls方法...... 498
17.7.4  重写Controls集合...... 499
17.8  开发继承自CompositeDataBoundControl的控件...... 499
17.8.1  MasterDetailForm控件...... 500
17.8.2  AddDetailRow方法...... 505
17.8.3  AddMasterCell方法...... 507
17.8.4  AddMasterHeaderCell方法...... 508
17.8.5  AddMasterSelectButton方法...... 508
17.8.6  AddDetailCommandBar方法...... 509
17.8.7  Delete数据操作...... 511
17.8.8  Update数据操作...... 512
17.8.9  Sort操作...... 513
17.8.10  控件状态...... 514
17.8.11  外观属性...... 516
17.8.12  无需编程实现主/从表...... 516
17.9  小结...... 518
第18章  ASP.NET 2.0数据控件字段模型...... 519
18.1  为什么需要ASP.NET 2.0数据控件字段模型...... 519
18.2  DataControlField组件...... 521
18.2.1  OnFieldChanged方法...... 523
18.2.2  Initialize方法...... 524
18.2.3  InitializeCell方法...... 524
18.2.4  ExtractValuesFromCell方法...... 525
18.3  BoundField... 526
18.3.1  InitializeCell方法...... 526
18.3.2  InitializeDataCell方法...... 527
18.3.3  OnDataBindField方法...... 527
18.3.4  GetValue方法...... 528
18.3.5  ExtractValuesFromCell方法...... 530
18.4  DataControlFieldCollection组件...... 531
18.4.1  FieldsChanged事件...... 531
18.4.2  OnInsert方法...... 532
18.5  开发自定义数据控件字段...... 532
18.5.1  DropDownListField... 533
18.5.2  CalendarField... 541
18.6  小结...... 546
第19章  开发ASP.NET 2.0自定义表格式数据绑定控件...... 547
19.1  继承自CompositeDataBoundControl. 548
19.2  重写CreateChildControls方法...... 548
19.2.1  初始化参数...... 550
19.2.2  描述主键字段...... 551
19.2.3  创建Table子控件...... 552
19.2.4  创建PagedDataSource对象...... 553
19.2.5  创建数据控件字段...... 554
19.2.6  创建顶部分页行...... 559
19.2.7  创建标题行...... 562
19.2.8  枚举数据记录...... 563
19.2.9  创建空数据行...... 565
19.2.10  创建和填充GridViewRowCollection... 566
19.2.11  CreateRow方法...... 567
19.2.12  InitializeRow方法...... 567
19.3  重写CreateDataSourceSelectArguments方法...... 568
19.4  重写CreateControlStyle方法...... 570
19.5  重写OnBubbleEvent方法...... 570
19.6  重写Render方法...... 578
19.7  状态管理...... 582
19.8  重写OnInit方法...... 584
19.9  事件...... 584
19.10  GridViewRow类...... 587
19.11  GridViewRowCollection类...... 591
19.12  小结...... 591
第20章  为什么需要ASP.NET 2.0成员资格/角色模型...... 593
20.1  ASP.NET 1.x安全模型...... 593
20.2  授权机制...... 599
20.3  ASP.NET 1.x安全模型的缺点...... 600
20.4  .NET 2.0提供程序模式...... 601
20.5  小结...... 602
第21章  理解ASP.NET 2.0成员资格模型...... 603
21.1  Membership类...... 603
21.1.1  成员资格提供程序的初始化和实例化...... 603
21.1.2  <membership>节...... 604
21.1.3  Provider和Providers属性...... 605
21.2  成员资格API.. 609
21.2.1  将新用户添加到数据存储中...... 609
21.2.2  从数据存储中删除用户...... 610
21.2.3  在数据存储中更新指定用户成员资格信息...... 611
21.2.4  根据数据存储验证用户凭证...... 611
21.2.5  在数据存储中查找用户...... 611
21.2.6  从数据存储中获取用户成员资格信息...... 613
21.2.7  强制设置应用程序特定的密码验证规则...... 614
21.2.8  访问用户在线时间窗口...... 616
21.3  开发自定义安全控件...... 617
21.3.1  Login控件...... 617
21.3.2  Register控件...... 622
21.3.3  使用Login和Register控件...... 624
21.3.4  注册SqlMembershipProvider.. 626
21.4  MembershipUser类...... 627
21.4.1  访问成员资格提供程序...... 629
21.4.2  重置并获取密码...... 629
21.4.3  修改密码...... 630
21.4.4  修改密码问题和答案...... 631
21.4.5  用户解锁...... 631
21.5  小结...... 632
第22章  开发自定义MembershipProvider和MembershipUser组件...... 633
22.1  MembershipProvider类...... 633
22.2  SqlMembershipProvider类...... 635
22.3  ProviderBase基类...... 635
22.4  MembershipProvider类...... 641
22.4.1  ChangePassword方法...... 642
22.4.2  ValidateUserInfo方法...... 644
22.4.3  UpdateUserInfo方法...... 648
22.4.4  Update方法...... 649
22.4.5  ChangePasswordQuestionAndAnswer方法...... 650
22.4.6  CreateUser方法...... 651
22.4.7  DeleteUser方法...... 656
22.4.8  FindUsersByEmail方法...... 657
22.4.9  FindUsersByName方法...... 658
22.4.10  GetAllUsers方法...... 660
22.4.11  Select方法...... 661
22.4.12  GetNumberOfUsersOnline方法...... 662
22.4.13  GetPassword方法...... 662
22.4.14  GetUser方法...... 665
22.4.15  GetUserNameByEmail方法...... 668
22.4.16  ResetPassword方法...... 668
22.4.17  UnlockUser方法...... 671
22.4.18  UpdateUser方法...... 672
22.4.19  ValidateUser方法...... 672
22.5  注册SqlMembershipProvider.. 673
22.6  使用自定义成员资格提供程序...... 674
22.7  扩展ASP.NET 2.0成员资格API.. 675
22.7.1  CustomMembershipUser类...... 676
22.7.2  CustomMembershipProvider类...... 677
22.7.3  CustomSqlMembershipProvider类...... 678
22.7.4  使用CustomMembershipUser、CustomMembershipProvider和               CustomSqlMembershipProvider.. 684
22.8  小结...... 686
第23章  理解ASP.NET角色管理模型...... 687
23.1  角色管理API.. 687
23.1.1  管理角色...... 688
23.1.2  管理用户...... 689
23.2  RolePrincipal类...... 691
23.2.1  身份...... 691
23.2.2  角色成员...... 692
23.2.3  IPrincipal接口...... 692
23.3  RoleManagerModule类...... 697
23.3.1  PostAuthenticateRequestCallback方法...... 698
23.3.2  GetRoles事件...... 699
23.3.3  EndRequestCallback方法...... 701
23.4  小结...... 702
第24章  开发自定义角色提供程序、模块和主体...... 703
24.1  RoleProvider基类...... 703
24.2  XmlRoleProvider.. 704
24.3  ProviderBase类...... 705
24.4  XML API.. 706
24.4.1  流XML API.. 707
24.4.2  随机访问XML API.. 711
24.5  实现RoleProvider类的方法...... 713
24.5.1  LoadData方法...... 714
24.5.2  SaveData方法...... 714
24.5.3  角色管理...... 715
24.5.4  用户管理...... 727
24.6  开发自定义角色主体...... 739
24.6.1  构造函数...... 740
24.6.2  GetRoles方法...... 742
24.6.3  实现IPrincipal接口...... 743
24.7  开发自定义角色管理模块...... 744
24.7.1  PostAuthenticateRequestCallback方法...... 745
24.7.2  GetRoles事件...... 747
24.7.3  EndRequestCallback方法...... 748
24.7.4  XmlRoleProvider和CacheDependency... 750
24.8  使用XmlRoleProvider.. 751
24.9  小结...... 756
第25章  开发基于提供程序的自定义服务...... 757
25.1  开发基于提供程序的自定义服务的方法...... 757
25.2  基于提供程序的RSS服务...... 758
25.3  自定义提供程序基类...... 759
25.4  自定义提供程序集合...... 760
25.5  配置Web.config和Machine.config文件...... 760
25.5.1  自定义配置节...... 761
25.5.2  注册<rssService>节...... 762
25.6  实现Service类...... 763
25.7  使用RSS服务...... 765
25.8  SqlRssProvider类...... 766
25.8.1  Initialize方法...... 766
25.8.2  LoadRss方法...... 772
25.8.3  GetDataReader方法...... 774
25.8.4  注册SqlRssProvider.. 774
25.9  RssHelper类...... 775
25.10  XmlRssProvider类...... 777
25.10.1  Initialize方法...... 778
25.10.2  LoadRss方法...... 781
25.10.3  RetrieveData方法...... 783
25.10.4  注册XmlRssProvider.. 784
25.11  小结...... 785
第26章  开发Ajax控件和组件:客户端功能...... 787
26.1  Ajax组件和控件...... 787
26.2  Ajax控件客户端功能的实现方法...... 789
26.3  呈现方式...... 790
26.3.1  将脚本呈现为HTML属性值...... 790
26.3.2  将客户端脚本呈现为脚本块...... 792
26.3.3  客户端脚本库...... 799
26.4  部署...... 802
26.4.1  将源文件部署到一个共享位置...... 803
26.4.2  将源文件嵌入程序集...... 803
26.5  呈现控件的客户端脚本的时机...... 811
26.5.1  禁用控件的客户端功能...... 811
26.5.2  检查请求浏览器的Ajax功能...... 812
26.6  呈现控件的客户端脚本的位置...... 813
26.6.1  重写OnPreRender方法...... 814
26.6.2  重写AddAttributesToRender方法...... 814
26.6.3  重写RenderContents方法...... 814
26.6.4  重写Render方法...... 815
26.7  退回到服务器端代码...... 815
26.8  开发Ajax控件...... 816
26.8.1  Ajax控件CustomImage.. 817
26.8.2  Ajax复合控件ImageDialog... 825
26.9  小结...... 840
第27章  开发Ajax控件和组件:异步客户端回调...... 841
27.1  为什么使用AjaxDropDownList控件...... 842
27.2  客户端回调机制...... 843
27.3  实现ASP.NET 2.0客户端回调机制...... 843
27.3.1  重写OnPreRender方法...... 844
27.3.2  重写Render方法...... 851
27.3.3  服务器端...... 852
27.4  ASP.NET 2.0客户端回调机制...... 853
27.4.1  重写OnPreRender方法...... 854
27.4.2  重写Render方法...... 856
27.4.3  服务器端...... 857
27.5  未知类型数据存储Ajax控件...... 858
27.6  主/次窗体...... 862
27.7  开发Ajax数据控件字段...... 863
27.8  AjaxDetailsDialog控件...... 866
27.8.1  将AjaxDetailsDialog实现为复合控件...... 869
27.8.2  将AjaxDetailsDialog实现为Ajax控件...... 872
27.9  AjaxField数据控件字段...... 879
27.9.1  重写InitializeCell方法...... 879
27.9.2  重写OnDataBindField方法...... 882
27.9.3  实现CreateField方法...... 884
27.9.4  重写ExtractValuesFromCell方法...... 884
27.10  DropDownListField2控件...... 885
27.10.1  重写InitializeCell方法...... 885
27.10.2  重写CreateField方法...... 888
27.10.3  重写ExtractValuesFromCell方法...... 888
27.11  Ajax控件CustomGridView.... 888
27.11.1  重写CreateChildTable方法...... 888
27.11.2  重写PrepareControlHierarchy方法...... 891
27.12  小结...... 897
第28章  开发Ajax控件和组件:Ajax模式...... 899
28.1  模式...... 899
28.2  Google的XML Web服务API.. 900
28.3  预测式获取(Predictive Fetch)模式...... 908
28.3.1  继承自WebControl基类...... 910
28.3.2  实现ICallbackEventHandler接口...... 927
28.4  小结...... 930
第29章  开发Ajax控件和组件:更多的Ajax模式...... 931
29.1  周期式刷新(Periodic Refresh)模式...... 931
29.1.1  继承自WebControl基类...... 932
29.1.2  实现ICallbackEventHandler接口...... 934
29.2  提交节流(Submission Throttling)模式...... 941
29.2.1  重写OnPreRender方法...... 942
29.2.2  重写Render方法...... 944
29.2.3  JavaScript函数...... 954
29.3  显式提交(Explicit Submission)模式...... 961
29.3.1  重写OnPreRender方法...... 961
29.3.2  重写Render方法...... 963
29.3.3  实现ICallbackEventHandler接口...... 965
29.3.4  JavaScript函数...... 966
29.4  小结...... 967
第30章  理解ASP.NET 2.0 Web部件框架...... 969
30.1  什么是ASP.NET Web部件框架...... 969
30.2  以声明方式开发WebPart控件...... 971
30.3  移动WebPart控件...... 975
30.4  个性化WebPart控件的属性...... 979
30.5  个性化WebPart控件的自定义属性...... 982
30.6  添加已声明的WebPart控件...... 984
30.7  添加已关闭的WebPart控件...... 986
30.8  导出WebPart控件...... 988
30.9  添加导入的WebPart控件...... 991
30.10  Web部件框架的主要组件...... 993
30.11  Part基类...... 994
30.12  小结...... 996
第31章  开发自定义WebPart、EditorPart和CatalogPart控件...... 997
31.1  WebPart基类...... 997
31.2  开发自定义WebPart控件...... 1001
31.2.1  CreateChildControls方法...... 1002
31.2.2  AddContainer方法...... 1004
31.2.3  AddItemToContainer方法...... 1004
31.2.4  使用RssReaderWebPart控件...... 1005
31.3  实现IWebPart接口...... 1006
31.4  IWebActionable接口...... 1006
31.4.1  开发自定义Web部件谓词...... 1008
31.4.2  开发支持自定义Web部件谓词的WebPart控件...... 1009
31.5  EditorPart基类...... 1014
31.6  开发自定义EditorPart控件...... 1015
31.6.1  将RssReaderEditorPart作为复合控件...... 1016
31.6.2  SyncChanges方法...... 1021
31.6.3  ApplyChanges方法...... 1022
31.6.4  OnLoad方法...... 1024
31.6.5  RssReaderWebPart4控件...... 1024
31.7  CatalogPart基类...... 1034
31.8  开发自定义CatalogPart控件...... 1038
31.8.1  GetAvailableWebPartDescriptions方法...... 1040
31.8.2  LoadWebPartInfoSet方法...... 1044
31.8.3  GetWebPart方法...... 1045
31.8.4  LoadWebPartDescriptionFile方法...... 1046
31.8.5  使用XmlWebServiceCatalogPart控件...... 1046
31.9  小结...... 1052
第32章  开发自定义WebPartZoneBase控件...... 1053
32.1  WebZone基类...... 1053
32.2  WebPartZoneBase基类...... 1056
32.2.1  继承自WebZone基类...... 1057
32.2.2  CreateWebPartChrome方法...... 1059
32.2.3  CreateInitialWebParts方法...... 1059
32.2.4  CreateVerbs事件...... 1059
32.2.5  实现IPostBackEventHandler接口...... 1060
32.3  WebPartZone类...... 1063
32.4  开发自定义WebPartZone控件...... 1065
32.4.1  XmlWebServiceWebPartZone类...... 1065
32.4.2  ProviderBasedWebPartZone类...... 1071
32.4.3  SqlDescriptionDocumentProvider类...... 1085
32.5  WebPartChrome类...... 1088
32.5.1  RenderWebPart方法...... 1089
32.5.2  PerformPreRender方法...... 1093
32.6  开发自定义WebPartChrome.. 1094
32.6.1  CustomWebPartZone类...... 1097
32.6.2  使用CustomWebPartChrome控件...... 1097
32.7  小结...... 1098
第33章  WebPartManager、Web部件连接和数据绑定WebPart控件...... 1099
33.1  开发自定义WebPartManager控件...... 1099
33.2  连接WebPart控件...... 1103
33.2.1  实现提供者和订阅者WebPart控件...... 1112
33.2.2  动态连接...... 1118
33.2.3  以编程方式实现连接...... 1123
33.3  开发数据绑定WebPart控件...... 1132
33.3.1  BaseDataBoundWebPart基类...... 1133
33.3.2  DataBoundWebPart基类...... 1135
33.3.3  CompositeDataBoundWebPart基类...... 1137
33.3.4  GridViewWebPart控件...... 1138
33.3.5  MasterDetailGridViewWebPart控件...... 1140
33.4  小结...... 1145
第1章  ASP.NET 2.0框架...... 1
1.1  请求过程...... 1
1.2  为什么开发自定义组件...... 4
1.2.1  数据源控件...... 5
1.2.2  角色管理模块和主体...... 5
1.2.3  角色提供程序...... 6
1.2.4  成员资格提供程序...... 6
1.2.5  自定义XML Web服务和客户端...... 6
1.2.6  开发Ajax控件和组件...... 7
1.2.7  开发Web部件控件...... 7
1.2.8  开发自定义数据字段...... 7
1.2.9  开发自定义HTTP处理程序和模块...... 8
1.2.10  开发自定义的基于提供程序的服务...... 8
1.3  小结...... 8
第2章  开发简单的自定义控件和用户控件...... 9
2.1  隐藏信息...... 9
2.2  部署自定义控件...... 14
2.3  在Web页面中使用自定义控件...... 15
2.4  为自定义控件添加属性...... 16
2.5  为自定义控件添加设计时属性...... 19
2.5.1  属性(Property)层次属性(Attribute)...... 19
2.5.2  类层次属性(Attribute)...... 20
2.5.3  程序集层次属性(Attribute)...... 21
2.6  将自定义控件添加到Visual Studio工具箱...... 21
2.7  与HtmlTextWriter相关的枚举...... 22
2.8  状态管理...... 27
2.9  用户控件...... 30
2.9.1  使用用户控件...... 32
2.9.2  为用户控件添加属性...... 33
2.9.3  为用户控件添加方法...... 35
2.9.4  内部揭秘...... 37
2.10  小结...... 38
第3章  开发自定义控件样式...... 39
3.1  Style类...... 39
3.2  WebControl类...... 40
3.2.1  重写Render方法...... 45
3.2.2  TagKey属性...... 45
3.2.3  RenderBeginTag方法...... 45
3.2.4  AddAttributesToRender方法...... 46
3.2.5  RenderContents方法...... 50
3.2.6  RenderEndTag方法...... 50
3.3  继承WebControl类...... 51
3.4  开发自定义Style类...... 56
3.5  使用自定义Style类...... 60
3.6  小结...... 62
第4章  开发自定义控件事件...... 63
4.1  事件介绍...... 63
4.2  .NET事件设计模式...... 64
4.2.1  事件数据和事件委托类...... 64
4.2.2  引发自定义控件事件...... 66
4.3  事件优化...... 68
4.4  回传...... 70
4.4.1  C#接口实现模式...... 73
4.4.2  回传事件...... 74
4.4.3  回传数据...... 74
4.5  页面生命周期...... 84
4.6  小结...... 87
第5章  开发自定义复合控件...... 89
5.1  再次修改CreditCardForm6... 89
5.1.1  呈现HTML... 89
5.1.2  回传功能...... 94
5.2  创建复合控件...... 96
5.2.1  继承CompositeControl类...... 97
5.2.2  选定子控件...... 97
5.2.3  选定布局...... 97
5.2.4  实现自定义容器控件...... 98
5.2.5  创建容器控件...... 99
5.2.6  创建容器控件的子控件...... 100
5.2.7  为容器控件应用样式...... 103
5.2.8  将容器控件添加到复合控件...... 104
5.2.9  呈现容器控件...... 104
5.2.10  CreateChildControls方法:一站式构建子控件...... 105
5.2.11  TagKey属性...... 107
5.2.12  CreateControlStyle方法...... 107
5.2.13  公开样式属性...... 108
5.2.14  RenderContents方法...... 108
5.2.15  Label属性...... 110
5.2.16  事件冒泡...... 112
5.2.17  自定义控件从CompositeControl继承了什么...... 116
5.2.18  重写Controls集合...... 116
5.2.19  INamingContainer接口...... 117
5.3  小结...... 118
第6章  开发自定义模板控件...... 119
6.1  自定义容器控件内容...... 119
6.2  TemplatedCreditCardForm控件...... 121
6.3  在ASP.NET页面中使用模板...... 123
6.4  模板内幕...... 125
6.5  数据绑定表达式...... 128
6.6  数据绑定表达式内幕...... 133
6.7  默认模板...... 135
6.8  小结...... 144
第7章  开发包含复杂属性的自定义控件...... 145
7.1  容器控件的样式属性...... 145
7.2  自定义容器控件外观...... 146
7.3  状态管理...... 148
7.4  实现IStateManager接口的类型...... 150
7.4.1  DefaultTemplateManager类...... 151
7.4.2  TemplatedCreditCardForm3... 156
7.5  不实现IStateManager接口的类型...... 162
7.5.1  TypeConverter类...... 162
7.5.2  DefaultTemplateManager2类...... 163
7.5.3  DefaultTemplateManager2Converter类...... 164
7.5.4  使用转换器标记DefaultTemplateManager2类...... 167
7.5.5  使用不实现IStateManager接口的类...... 167
7.5.6  为什么需要使用TypeDescriptor.. 170
7.6  容器控件样式的状态管理...... 171
7.6.1  声明属性...... 171
7.6.2  TrackViewState方法...... 173
7.6.3  SaveViewState方法...... 174
7.6.4  LoadViewState方法...... 175
7.7  声明持久性...... 176
7.7.1  简单属性...... 176
7.7.2  复杂属性(连字符声明持久性)...... 177
7.7.3  复杂属性(内部属性声明持久性)...... 179
7.8  小结...... 181
第8章  ASP.NET请求处理框架...... 183
8.1  请求过程...... 183
8.2  HTTP模块...... 186
8.3  HTTP处理程序...... 187
8.4  HTTP处理程序工厂...... 188
8.5  控件生成器...... 188
8.6  开发自定义HTTP模块...... 195
8.7  注册自定义HTTP模块...... 198
8.8  开发自定义HTTP处理程序工厂...... 198
8.9  开发自定义HTTP处理程序...... 200
8.9.1  RSS... 200
8.9.2  RssHandler.. 201
8.9.3  注册自定义HTTP处理程序...... 204
8.10  开发自定义控件生成器...... 206
8.10.1  开发自定义控件生成器CompositeCreditCardForm2Builder.. 209
8.10.2  开发自定义控件CompositeCreditCardForm2... 210
8.11  小结...... 215
第9章  数据绑定...... 217
9.1  CustomTable控件...... 217
9.2  设置数据源...... 218
9.3  重写CreateChildControls方法...... 219
9.4  重写DataBind方法...... 221
9.5  创建控件层次...... 222
9.5.1  DataControlField类...... 224
9.5.2  CreateFields方法...... 225
9.5.3  CreateHeaderRow方法...... 227
9.5.4  CreateBodyRow方法...... 228
9.5.5  CachePrimaryKey方法...... 233
9.5.6  CreatePagerRow方法...... 234
9.6  重写CreateControlStyle属方法...... 235
9.7  实现CustomTable事件...... 236
9.8  重写OnBubbleEvent. 237
9.9  CustomTableRow类...... 238
9.10  CustomTableRowCollection类...... 240
9.11  子控件样式...... 241
9.12  重写Render方法...... 242
9.13  状态管理...... 244
9.13.1  TrackViewState方法...... 244
9.13.2  SaveViewState方法...... 245
9.13.3  LoadViewState方法...... 246
9.14  在页面中使用CustomTable控件...... 248
9.15  CustomTable控件的缺点...... 249
9.16  小结...... 249
第10章  XML Web服务...... 251
10.1  开发和使用XML Web服务...... 251
10.2  添加引用按钮背后的秘密...... 254
10.3  WSDL文档...... 257
10.3.1  参数的名称、类型和顺序...... 259
10.3.2  返回值的类型和顺序...... 259
10.3.3  描述方法...... 260
10.3.4  描述访问XML Web服务方法的通信协议...... 261
10.3.5  为方法访问设置站点...... 262
10.3.6  设置方法的类...... 262
10.4  XmlWebServiceMethodInvoker类...... 262
10.4.1  以编程方式下载WSDL文档...... 263
10.4.2  根据WSDL文档反序列化一个.NET对象...... 264
10.4.3  为代理类生成代码...... 265
10.4.4  Import方法背后的秘密...... 266
10.4.5  编译代理类代码...... 269
10.4.6  创建代理类实例...... 270
10.4.7  调用代理类实例中的特定方法...... 270
10.4.8  总结:The InvokeXmlWebServiceMethod方法...... 274
10.5  如何使用XmlWebServiceMethodInvoker.. 275
10.6  缓存编译后的代理类...... 277
10.6.1  缓存相关属性...... 278
10.6.2  CompileCodeForProxyClass方法...... 278
10.6.3  InvokeXmlWebServiceMethod方法...... 280
10.6.4  使用缓存功能...... 281
10.7  开发XML Web服务自定义控件...... 284
10.8  XmlWebServiceResolver组件...... 286
10.8.1  XMLResolver类...... 286
10.8.2  GetEntity方法...... 290
10.9  小结...... 294
第11章  实现架构导入扩展和ISerializable接口...... 295
11.1  实现IXmlSerializable接口...... 295
11.1.1  实现服务器端组件...... 296
11.1.2  开发客户端组件...... 301
11.2  开发自定义架构导入扩展...... 303
11.2.1  使用喜欢的语言编写代码...... 305
11.2.2  CodeDom方法...... 305
11.3  注册自定义架构导入扩展...... 319
11.4  以块化方式发送和接收数据...... 321
11.4.1  BookContent类...... 321
11.4.2  ForumBook类...... 324
11.4.3  自定义架构导入扩展...... 325
11.5  XmlWebServiceMethodInvoker的可扩展能力...... 326
11.6  小结...... 326
第12章  理解ASP.NET 2.0表格式数据源控件模型...... 327
12.1  为什么需要ASP.NET 2.0数据源控件模型...... 327
12.1.1  获取数据...... 329
12.1.2  Update事件...... 330
12.2  ASP.NET 2.0数据源控件模型...... 332
12.3  AS P.NET 2.0表格式数据源控件模型...... 333
12.3.1  IDataSource接口...... 333
12.3.2  DataSourceControl类背后的秘密...... 335
12.3.3  继承DataSourceControl基类...... 336
12.3.4  DataSourceView类...... 338
12.3.5  Delete方法...... 349
12.3.6  Update方法...... 353
12.3.7  Insert方法...... 357
12.3.8  状态管理...... 361
12.4  小结...... 362
第13章  ASP.NET 2.0数据源控件参数模型...... 363
13.1  Parameters类...... 363
13.2  Parameter类...... 366
13.2.1  OnParameterChanged方法...... 366
13.2.2  SaveCurrentValue方法...... 367
13.2.3  Evaluate方法...... 368
13.2.4  CookieParameter组件...... 368
13.2.5  ControlParameter组件...... 369
13.3  ParameterCollection类...... 371
13.3.1  ParametersChanged事件...... 371
13.3.2  OnInsert方法...... 372
13.3.3  GetValues方法...... 372
13.3.4  UpdateValues方法...... 374
13.4  自动调用GetValues和UpdateValues方法...... 374
13.4.1  ParameterCollection类型属性...... 374
13.4.2  OnInit和Page_LoadComplete方法...... 376
13.4.3  ExecuteSelect方法...... 377
13.4.4  ExecuteDelete方法...... 377
13.4.5  ExecuteUpdate方法...... 379
13.4.6  ExecuteInsert方法...... 381
13.5  综合应用...... 383
13.6  开发自定义参数...... 385
13.6.1  XmlWebServiceParameter组件...... 385
13.6.2  ObjectParameter组件...... 389
13.6.3  ClientParameter组件...... 392
13.7  小结...... 397
第14章  开发ASP.NET 2.0自定义表格式数据源控件...... 399
14.1  XmlWebServiceMethodInvoker组件...... 399
14.2  DataSourceControl类...... 401
14.3  DataSourceView类...... 402
14.3.1  ExecuteSelect方法...... 403
14.3.2  ExecuteUpdate方法...... 415
14.3.3  ExecuteInsert方法...... 421
14.3.4  ExecuteDelete方法...... 425
14.4  RetrieveMethodArgumentNamesAndValues方法...... 428
14.5  状态管理...... 430
14.6  小结...... 432
第15章  理解ASP.NET 2.0分层式数据源控件模型...... 433
15.1  IHierarchicalDataSource接口...... 434
15.2  HierarchicalDataSourceControl类...... 435
15.3  HierarchicalDataSourceView类...... 437
15.4  IHierarchyData接口...... 440
15.5  IHierarchicalEnumerable接口...... 441
15.5.1  XmlHierarchyData类...... 444
15.5.2  XmlHierarchicalEnumerable类...... 450
15.5.3  XmlHierarchyDataPropertyDescriptor类...... 451
15.5.4  ICustomTypeDescriptor接口...... 453
15.5.5  XmlHierarchicalDataSourceView.... 455
15.6  小结...... 456
第16章  开发ASP.NET 2.0自定义分层式数据源控件...... 457
16.1  CustomSqlDataSource控件...... 457
16.2  SqlHierarchyDataPropertyDescriptor类...... 463
16.3  SqlHierarchyData类...... 466
16.3.1  构造函数...... 466
16.3.2  实现HasChildren属性...... 467
16.3.3  实现Type属性...... 467
16.4  SqlHierarchicalEnumerable类...... 469
16.5  SqlHierarchicalDataSourceView类...... 471
16.6  小结...... 472
第17章  理解ASP.NET 2.0表格式数据绑定控件模型...... 473
17.1  本章概述...... 473
17.2  ASP.NET 1.x数据绑定控件模型...... 475
17.2.1  RetrieveData方法...... 475
17.2.2  重写DataBind方法...... 476
17.2.3  处理第3个数据绑定任务...... 476
17.3  BaseDataBoundControl类...... 477
17.3.1  自动调用DataBind方法...... 477
17.3.2  第一个和第二个数据绑定任务...... 478
17.3.3  第3个数据绑定任务...... 478
17.4  开发继承自BaseDataBoundControl的自定义数据绑定控件...... 480
17.4.1  处理Load事件...... 481
17.4.2  重写PerformSelect方法...... 481
17.4.3  以声明方式编程而不编写代码...... 483
17.4.4  CustomTable2控件的不足...... 484
17.5  DataBoundControl类...... 484
17.5.1  GetDataSource方法...... 485
17.5.2  GetData方法...... 486
17.5.3  重写BaseDataBoundControl的抽象方法...... 486
17.6  开发继承自DataBoundControl的自定义数据绑定控件...... 490
17.6.1  重写CreateDataSourceSelectArguments方法...... 490
17.6.2  重写PerformDataBinding方法...... 492
17.6.3  UpdateCallback方法...... 492
17.6.4  DeleteCallback方法...... 494
17.6.5  以声明方式实现针对未知数据的无代码编程...... 495
17.7  CompositeDataBoundControl类...... 496
17.7.1  重写PerformDataBinding方法...... 497
17.7.2  重写DataBind方法...... 498
17.7.3  重写CreateChildControls方法...... 498
17.7.4  重写Controls集合...... 499
17.8  开发继承自CompositeDataBoundControl的控件...... 499
17.8.1  MasterDetailForm控件...... 500
17.8.2  AddDetailRow方法...... 505
17.8.3  AddMasterCell方法...... 507
17.8.4  AddMasterHeaderCell方法...... 508
17.8.5  AddMasterSelectButton方法...... 508
17.8.6  AddDetailCommandBar方法...... 509
17.8.7  Delete数据操作...... 511
17.8.8  Update数据操作...... 512
17.8.9  Sort操作...... 513
17.8.10  控件状态...... 514
17.8.11  外观属性...... 516
17.8.12  无需编程实现主/从表...... 516
17.9  小结...... 518
第18章  ASP.NET 2.0数据控件字段模型...... 519
18.1  为什么需要ASP.NET 2.0数据控件字段模型...... 519
18.2  DataControlField组件...... 521
18.2.1  OnFieldChanged方法...... 523
18.2.2  Initialize方法...... 524
18.2.3  InitializeCell方法...... 524
18.2.4  ExtractValuesFromCell方法...... 525
18.3  BoundField... 526
18.3.1  InitializeCell方法...... 526
18.3.2  InitializeDataCell方法...... 527
18.3.3  OnDataBindField方法...... 527
18.3.4  GetValue方法...... 528
18.3.5  ExtractValuesFromCell方法...... 530
18.4  DataControlFieldCollection组件...... 531
18.4.1  FieldsChanged事件...... 531
18.4.2  OnInsert方法...... 532
18.5  开发自定义数据控件字段...... 532
18.5.1  DropDownListField... 533
18.5.2  CalendarField... 541
18.6  小结...... 546
第19章  开发ASP.NET 2.0自定义表格式数据绑定控件...... 547
19.1  继承自CompositeDataBoundControl. 548
19.2  重写CreateChildControls方法...... 548
19.2.1  初始化参数...... 550
19.2.2  描述主键字段...... 551
19.2.3  创建Table子控件...... 552
19.2.4  创建PagedDataSource对象...... 553
19.2.5  创建数据控件字段...... 554
19.2.6  创建顶部分页行...... 559
19.2.7  创建标题行...... 562
19.2.8  枚举数据记录...... 563
19.2.9  创建空数据行...... 565
19.2.10  创建和填充GridViewRowCollection... 566
19.2.11  CreateRow方法...... 567
19.2.12  InitializeRow方法...... 567
19.3  重写CreateDataSourceSelectArguments方法...... 568
19.4  重写CreateControlStyle方法...... 570
19.5  重写OnBubbleEvent方法...... 570
19.6  重写Render方法...... 578
19.7  状态管理...... 582
19.8  重写OnInit方法...... 584
19.9  事件...... 584
19.10  GridViewRow类...... 587
19.11  GridViewRowCollection类...... 591
19.12  小结...... 591
第20章  为什么需要ASP.NET 2.0成员资格/角色模型...... 593
20.1  ASP.NET 1.x安全模型...... 593
20.2  授权机制...... 599
20.3  ASP.NET 1.x安全模型的缺点...... 600
20.4  .NET 2.0提供程序模式...... 601
20.5  小结...... 602
第21章  理解ASP.NET 2.0成员资格模型...... 603
21.1  Membership类...... 603
21.1.1  成员资格提供程序的初始化和实例化...... 603
21.1.2  <membership>节...... 604
21.1.3  Provider和Providers属性...... 605
21.2  成员资格API.. 609
21.2.1  将新用户添加到数据存储中...... 609
21.2.2  从数据存储中删除用户...... 610
21.2.3  在数据存储中更新指定用户成员资格信息...... 611
21.2.4  根据数据存储验证用户凭证...... 611
21.2.5  在数据存储中查找用户...... 611
21.2.6  从数据存储中获取用户成员资格信息...... 613
21.2.7  强制设置应用程序特定的密码验证规则...... 614
21.2.8  访问用户在线时间窗口...... 616
21.3  开发自定义安全控件...... 617
21.3.1  Login控件...... 617
21.3.2  Register控件...... 622
21.3.3  使用Login和Register控件...... 624
21.3.4  注册SqlMembershipProvider.. 626
21.4  MembershipUser类...... 627
21.4.1  访问成员资格提供程序...... 629
21.4.2  重置并获取密码...... 629
21.4.3  修改密码...... 630
21.4.4  修改密码问题和答案...... 631
21.4.5  用户解锁...... 631
21.5  小结...... 632
第22章  开发自定义MembershipProvider和MembershipUser组件...... 633
22.1  MembershipProvider类...... 633
22.2  SqlMembershipProvider类...... 635
22.3  ProviderBase基类...... 635
22.4  MembershipProvider类...... 641
22.4.1  ChangePassword方法...... 642
22.4.2  ValidateUserInfo方法...... 644
22.4.3  UpdateUserInfo方法...... 648
22.4.4  Update方法...... 649
22.4.5  ChangePasswordQuestionAndAnswer方法...... 650
22.4.6  CreateUser方法...... 651
22.4.7  DeleteUser方法...... 656
22.4.8  FindUsersByEmail方法...... 657
22.4.9  FindUsersByName方法...... 658
22.4.10  GetAllUsers方法...... 660
22.4.11  Select方法...... 661
22.4.12  GetNumberOfUsersOnline方法...... 662
22.4.13  GetPassword方法...... 662
22.4.14  GetUser方法...... 665
22.4.15  GetUserNameByEmail方法...... 668
22.4.16  ResetPassword方法...... 668
22.4.17  UnlockUser方法...... 671
22.4.18  UpdateUser方法...... 672
22.4.19  ValidateUser方法...... 672
22.5  注册SqlMembershipProvider.. 673
22.6  使用自定义成员资格提供程序...... 674
22.7  扩展ASP.NET 2.0成员资格API.. 675
22.7.1  CustomMembershipUser类...... 676
22.7.2  CustomMembershipProvider类...... 677
22.7.3  CustomSqlMembershipProvider类...... 678
22.7.4  使用CustomMembershipUser、CustomMembershipProvider和               CustomSqlMembershipProvider.. 684
22.8  小结...... 686
第23章  理解ASP.NET角色管理模型...... 687
23.1  角色管理API.. 687
23.1.1  管理角色...... 688
23.1.2  管理用户...... 689
23.2  RolePrincipal类...... 691
23.2.1  身份...... 691
23.2.2  角色成员...... 692
23.2.3  IPrincipal接口...... 692
23.3  RoleManagerModule类...... 697
23.3.1  PostAuthenticateRequestCallback方法...... 698
23.3.2  GetRoles事件...... 699
23.3.3  EndRequestCallback方法...... 701
23.4  小结...... 702
第24章  开发自定义角色提供程序、模块和主体...... 703
24.1  RoleProvider基类...... 703
24.2  XmlRoleProvider.. 704
24.3  ProviderBase类...... 705
24.4  XML API.. 706
24.4.1  流XML API.. 707
24.4.2  随机访问XML API.. 711
24.5  实现RoleProvider类的方法...... 713
24.5.1  LoadData方法...... 714
24.5.2  SaveData方法...... 714
24.5.3  角色管理...... 715
24.5.4  用户管理...... 727
24.6  开发自定义角色主体...... 739
24.6.1  构造函数...... 740
24.6.2  GetRoles方法...... 742
24.6.3  实现IPrincipal接口...... 743
24.7  开发自定义角色管理模块...... 744
24.7.1  PostAuthenticateRequestCallback方法...... 745
24.7.2  GetRoles事件...... 747
24.7.3  EndRequestCallback方法...... 748
24.7.4  XmlRoleProvider和CacheDependency... 750
24.8  使用XmlRoleProvider.. 751
24.9  小结...... 756
第25章  开发基于提供程序的自定义服务...... 757
25.1  开发基于提供程序的自定义服务的方法...... 757
25.2  基于提供程序的RSS服务...... 758
25.3  自定义提供程序基类...... 759
25.4  自定义提供程序集合...... 760
25.5  配置Web.config和Machine.config文件...... 760
25.5.1  自定义配置节...... 761
25.5.2  注册<rssService>节...... 762
25.6  实现Service类...... 763
25.7  使用RSS服务...... 765
25.8  SqlRssProvider类...... 766
25.8.1  Initialize方法...... 766
25.8.2  LoadRss方法...... 772
25.8.3  GetDataReader方法...... 774
25.8.4  注册SqlRssProvider.. 774
25.9  RssHelper类...... 775
25.10  XmlRssProvider类...... 777
25.10.1  Initialize方法...... 778
25.10.2  LoadRss方法...... 781
25.10.3  RetrieveData方法...... 783
25.10.4  注册XmlRssProvider.. 784
25.11  小结...... 785
第26章  开发Ajax控件和组件:客户端功能...... 787
26.1  Ajax组件和控件...... 787
26.2  Ajax控件客户端功能的实现方法...... 789
26.3  呈现方式...... 790
26.3.1  将脚本呈现为HTML属性值...... 790
26.3.2  将客户端脚本呈现为脚本块...... 792
26.3.3  客户端脚本库...... 799
26.4  部署...... 802
26.4.1  将源文件部署到一个共享位置...... 803
26.4.2  将源文件嵌入程序集...... 803
26.5  呈现控件的客户端脚本的时机...... 811
26.5.1  禁用控件的客户端功能...... 811
26.5.2  检查请求浏览器的Ajax功能...... 812
26.6  呈现控件的客户端脚本的位置...... 813
26.6.1  重写OnPreRender方法...... 814
26.6.2  重写AddAttributesToRender方法...... 814
26.6.3  重写RenderContents方法...... 814
26.6.4  重写Render方法...... 815
26.7  退回到服务器端代码...... 815
26.8  开发Ajax控件...... 816
26.8.1  Ajax控件CustomImage.. 817
26.8.2  Ajax复合控件ImageDialog... 825
26.9  小结...... 840
第27章  开发Ajax控件和组件:异步客户端回调...... 841
27.1  为什么使用AjaxDropDownList控件...... 842
27.2  客户端回调机制...... 843
27.3  实现ASP.NET 2.0客户端回调机制...... 843
27.3.1  重写OnPreRender方法...... 844
27.3.2  重写Render方法...... 851
27.3.3  服务器端...... 852
27.4  ASP.NET 2.0客户端回调机制...... 853
27.4.1  重写OnPreRender方法...... 854
27.4.2  重写Render方法...... 856
27.4.3  服务器端...... 857
27.5  未知类型数据存储Ajax控件...... 858
27.6  主/次窗体...... 862
27.7  开发Ajax数据控件字段...... 863
27.8  AjaxDetailsDialog控件...... 866
27.8.1  将AjaxDetailsDialog实现为复合控件...... 869
27.8.2  将AjaxDetailsDialog实现为Ajax控件...... 872
27.9  AjaxField数据控件字段...... 879
27.9.1  重写InitializeCell方法...... 879
27.9.2  重写OnDataBindField方法...... 882
27.9.3  实现CreateField方法...... 884
27.9.4  重写ExtractValuesFromCell方法...... 884
27.10  DropDownListField2控件...... 885
27.10.1  重写InitializeCell方法...... 885
27.10.2  重写CreateField方法...... 888
27.10.3  重写ExtractValuesFromCell方法...... 888
27.11  Ajax控件CustomGridView.... 888
27.11.1  重写CreateChildTable方法...... 888
27.11.2  重写PrepareControlHierarchy方法...... 891
27.12  小结...... 897
第28章  开发Ajax控件和组件:Ajax模式...... 899
28.1  模式...... 899
28.2  Google的XML Web服务API.. 900
28.3  预测式获取(Predictive Fetch)模式...... 908
28.3.1  继承自WebControl基类...... 910
28.3.2  实现ICallbackEventHandler接口...... 927
28.4  小结...... 930
第29章  开发Ajax控件和组件:更多的Ajax模式...... 931
29.1  周期式刷新(Periodic Refresh)模式...... 931
29.1.1  继承自WebControl基类...... 932
29.1.2  实现ICallbackEventHandler接口...... 934
29.2  提交节流(Submission Throttling)模式...... 941
29.2.1  重写OnPreRender方法...... 942
29.2.2  重写Render方法...... 944
29.2.3  JavaScript函数...... 954
29.3  显式提交(Explicit Submission)模式...... 961
29.3.1  重写OnPreRender方法...... 961
29.3.2  重写Render方法...... 963
29.3.3  实现ICallbackEventHandler接口...... 965
29.3.4  JavaScript函数...... 966
29.4  小结...... 967
第30章  理解ASP.NET 2.0 Web部件框架...... 969
30.1  什么是ASP.NET Web部件框架...... 969
30.2  以声明方式开发WebPart控件...... 971
30.3  移动WebPart控件...... 975
30.4  个性化WebPart控件的属性...... 979
30.5  个性化WebPart控件的自定义属性...... 982
30.6  添加已声明的WebPart控件...... 984
30.7  添加已关闭的WebPart控件...... 986
30.8  导出WebPart控件...... 988
30.9  添加导入的WebPart控件...... 991
30.10  Web部件框架的主要组件...... 993
30.11  Part基类...... 994
30.12  小结...... 996
第31章  开发自定义WebPart、EditorPart和CatalogPart控件...... 997
31.1  WebPart基类...... 997
31.2  开发自定义WebPart控件...... 1001
31.2.1  CreateChildControls方法...... 1002
31.2.2  AddContainer方法...... 1004
31.2.3  AddItemToContainer方法...... 1004
31.2.4  使用RssReaderWebPart控件...... 1005
31.3  实现IWebPart接口...... 1006
31.4  IWebActionable接口...... 1006
31.4.1  开发自定义Web部件谓词...... 1008
31.4.2  开发支持自定义Web部件谓词的WebPart控件...... 1009
31.5  EditorPart基类...... 1014
31.6  开发自定义EditorPart控件...... 1015
31.6.1  将RssReaderEditorPart作为复合控件...... 1016
31.6.2  SyncChanges方法...... 1021
31.6.3  ApplyChanges方法...... 1022
31.6.4  OnLoad方法...... 1024
31.6.5  RssReaderWebPart4控件...... 1024
31.7  CatalogPart基类...... 1034
31.8  开发自定义CatalogPart控件...... 1038
31.8.1  GetAvailableWebPartDescriptions方法...... 1040
31.8.2  LoadWebPartInfoSet方法...... 1044
31.8.3  GetWebPart方法...... 1045
31.8.4  LoadWebPartDescriptionFile方法...... 1046
31.8.5  使用XmlWebServiceCatalogPart控件...... 1046
31.9  小结...... 1052
第32章  开发自定义WebPartZoneBase控件...... 1053
32.1  WebZone基类...... 1053
32.2  WebPartZoneBase基类...... 1056
32.2.1  继承自WebZone基类...... 1057
32.2.2  CreateWebPartChrome方法...... 1059
32.2.3  CreateInitialWebParts方法...... 1059
32.2.4  CreateVerbs事件...... 1059
32.2.5  实现IPostBackEventHandler接口...... 1060
32.3  WebPartZone类...... 1063
32.4  开发自定义WebPartZone控件...... 1065
32.4.1  XmlWebServiceWebPartZone类...... 1065
32.4.2  ProviderBasedWebPartZone类...... 1071
32.4.3  SqlDescriptionDocumentProvider类...... 1085
32.5  WebPartChrome类...... 1088
32.5.1  RenderWebPart方法...... 1089
32.5.2  PerformPreRender方法...... 1093
32.6  开发自定义WebPartChrome.. 1094
32.6.1  CustomWebPartZone类...... 1097
32.6.2  使用CustomWebPartChrome控件...... 1097
32.7  小结...... 1098
第33章  WebPartManager、Web部件连接和数据绑定WebPart控件...... 1099
33.1  开发自定义WebPartManager控件...... 1099
33.2  连接WebPart控件...... 1103
33.2.1  实现提供者和订阅者WebPart控件...... 1112
33.2.2  动态连接...... 1118
33.2.3  以编程方式实现连接...... 1123
33.3  开发数据绑定WebPart控件...... 1132
33.3.1  BaseDataBoundWebPart基类...... 1133
33.3.2  DataBoundWebPart基类...... 1135
33.3.3  CompositeDataBoundWebPart基类...... 1137
33.3.4  GridViewWebPart控件...... 1138
33.3.5  MasterDetailGridViewWebPart控件...... 1140
33.4  小结...... 1145
· · · · · · (收起)

读后感

评分

一开始,我并不知道ASP.NET的运行原理,是这本书给我指引,通过了解一个服务器控件的运行原理,从而了解整个ASP.NET的运行机制,但第一次看得比较快,还得读第二次

评分

一开始,我并不知道ASP.NET的运行原理,是这本书给我指引,通过了解一个服务器控件的运行原理,从而了解整个ASP.NET的运行机制,但第一次看得比较快,还得读第二次

评分

一开始,我并不知道ASP.NET的运行原理,是这本书给我指引,通过了解一个服务器控件的运行原理,从而了解整个ASP.NET的运行机制,但第一次看得比较快,还得读第二次

评分

一开始,我并不知道ASP.NET的运行原理,是这本书给我指引,通过了解一个服务器控件的运行原理,从而了解整个ASP.NET的运行机制,但第一次看得比较快,还得读第二次

评分

一开始,我并不知道ASP.NET的运行原理,是这本书给我指引,通过了解一个服务器控件的运行原理,从而了解整个ASP.NET的运行机制,但第一次看得比较快,还得读第二次

用户评价

评分

作为一名多年的 ASP.NET 开发者,我一直在寻找一本能够真正帮助我理解服务器控件内部机制的书籍。当我看到《ASP.NET 2.0 服务器控件与组件开发高级编程》这个标题时,内心充满了期待。我希望这本书能够带领我深入到 ASP.NET 2.0 的核心,理解那些隐藏在易用性之下的复杂逻辑。然而,在阅读过程中,我发现这本书更多地聚焦于如何“利用”ASP.NET 2.0 提供的强大功能来构建应用程序,而不是去“创造”和“重构”这些功能。例如,在探讨自定义控件的创建时,书中提供了一些相对基础的例子,例如创建一个简单的按钮控件,或者一个带有自定义属性的文本框。这些例子虽然能够帮助初学者理解自定义控件的基本流程,但对于我这样已经熟悉了 ASP.NET 基础知识的人来说,显得过于简单。我更期望能够看到如何设计一个具有复杂行为的、能够自适应不同场景的控件,比如一个能够动态生成表格,并且支持行内编辑、单元格合并,甚至能够与 JavaScript 进行深度交互的 GridView 控件。书中对事件处理机制的讲解也比较笼统,并没有深入到事件传播的细节,也没有提供如何创建自定义事件或者管理复杂的事件依赖关系的方法。这使得我在尝试构建一个需要多组件之间协同工作的系统时,常常会遇到事件处理的瓶颈,不知道如何有效地解耦和管理这些事件。另外,对于组件的重用性设计,书中虽然提及了封装的重要性,但并没有提供更高级的设计模式,例如如何创建能够承载复杂业务逻辑的自定义数据访问组件,或者如何将 UI 逻辑与业务逻辑进行分离,以提高代码的可维护性和可测试性。总的来说,这本书更像是一本“ASP.NET 2.0 应用开发实战指南”,而非我所期望的“控件与组件底层设计深度剖析”。

评分

我一直对 ASP.NET 2.0 的服务器控件和组件开发抱有浓厚的兴趣,尤其希望能在这方面有所突破,成为一名能够设计和构建高性能、可复用控件的开发者。这本书的名字《ASP.NET 2.0 服务器控件与组件开发高级编程》无疑击中了我的痛点。我期待的是能在这本书中找到关于控件生命周期管理的精髓,理解 ViewState 的工作原理,以及如何通过自定义控件来拓展 ASP.NET 的功能边界。但实际阅读下来,我发现本书的重点似乎更多地放在了如何高效地利用 ASP.NET 2.0 已经提供的丰富的服务器控件和组件,来快速构建企业级应用。例如,书中对数据绑定控件的介绍,提供了大量的示例来展示如何与各种数据源控件集成,以及如何进行数据排序、过滤和分页。这些内容对于快速开发而言非常有价值,但并没有深入探讨数据绑定控件在内部是如何实现的,例如当数据源发生变化时,控件是如何感知并重新渲染的,或者如何在控件的生命周期中注入自定义的渲染逻辑。我期望能够看到关于如何创建自定义数据绑定控件的详细步骤,以及如何实现一些高级的 UI 模式,例如惰性加载、虚拟化等,以提升大规模数据的展示性能。此外,对于组件的封装和重用,书中虽然有提及,但更多的是对现有控件的属性和方法的封装,并没有深入到如何设计一套自己的组件库,或者如何创建能够在不同项目之间无缝迁移的高内聚、低耦合的组件。比如,对于自定义控件的事件模型,书中提供的例子相对简单,并没有展示如何实现复杂的事件链或者如何进行事件的广播和订阅。这让我感觉,这本书更多地是在教我如何“使用”和“组合”现有的强大工具,而缺乏对这些工具“内在机制”的深入剖析,也缺乏指导我“创造”更底层、更灵活的工具的思路。

评分

这本书的标题着实吸引人,尤其是“高级编程”这几个字,立刻勾起了我对深入探索 ASP.NET 2.0 服务器控件和组件开发潜力的渴望。然而,在翻阅了前几章后,我发现这本书的侧重点似乎与我的预期有所偏差。我期待的是能够看到如何从底层逻辑理解服务器控件的生命周期,如何巧妙地设计和封装可复用的组件,甚至如何通过自定义控件来扩展 ASP.NET 本身的能力。书中对控件理论的阐述是存在的,但似乎更偏向于对现有控件的“使用”和“组合”,而非“创造”和“深度优化”。例如,在讲解数据绑定控件时,我更希望能够看到关于数据源控件的内部工作原理,以及如何在数据绑定过程中实现更精细的控制,比如对数据进行实时过滤、排序,甚至是自定义的数据转换。书中虽然提到了这些功能,但给出的示例代码和解释,感觉更像是对现有API的简单封装,而没有深入到背后的实现机制,导致我在实际遇到一些复杂的业务场景时,仍然感到力不从心,无法找到更优雅、更高效的解决方案。对于服务器控件的生命周期,书中虽然有提及,但对于每个阶段的细微之处,以及如何在特定阶段注入自定义逻辑来影响控件的行为,描述得相对模糊。我曾尝试通过书中介绍的方法,在控件的Init或Load阶段进行一些数据预加载,但发现效果并不如预期,而且调试起来也比较困难,很难 pinpoint 是哪个环节出了问题。这让我反思,或许这本书更适合那些已经对 ASP.NET 2.0 有一定基础,并且希望快速上手开发的企业级应用,但对于那些渴望成为真正意义上的“控件开发者”或者“框架构建者”的我来说,还需要寻找其他的资料来填补这部分知识的空白。

评分

一直以来,我都希望能在 ASP.NET 2.0 服务器控件和组件开发领域达到“高级编程”的水平,能够深入理解控件的内部运作机制,并能够设计和实现高度可复用、高性能的组件。《ASP.NET 2.0 服务器控件与组件开发高级编程》这本书的标题,正是点燃了我学习的热情。然而,在深入研读这本书后,我发现它的重点似乎更多地放在了如何“利用”ASP.NET 2.0 提供的丰富控件和开发模式,来快速构建企业级应用程序,而不是对控件和组件的“创造”过程进行深入的解析。例如,书中在讲解数据绑定控件时,提供了大量的示例来展示如何将数据库中的数据绑定到 Repeater、DataList、GridView 等控件上,并介绍了如何使用 LinqDataSource、ObjectDataSource 等数据源控件。这些内容对于快速搭建数据驱动的应用程序非常有价值,但并没有深入探讨数据绑定控件在内部是如何工作的?当数据源发生变化时,控件是如何感知并触发 UI 更新的?或者,如何在控件的生命周期中注入自定义逻辑,以实现更高级的数据处理和渲染效果?书中对于这些底层细节的阐述相对较少。同样,在组件开发方面,书中虽然提到了用户控件和自定义控件的创建,但给出的示例大多是比较基础的,例如一个简单的带有自定义属性的文本框,或者一个能够显示特定信息的标签。我更希望能够看到如何设计一个具有复杂交互逻辑的组件,例如一个能够处理复杂表单验证、提供多级级联选择,或者能够实现拖放操作的 UI 组件。此外,对于组件的封装和重用,书中虽然强调了封装的重要性,但并没有深入到如何构建一套完整的组件库,或者如何设计能够应对多种业务场景的灵活组件。

评分

作为一名致力于提升 ASP.NET 2.0 服务器控件和组件开发技能的开发者,我对《ASP.NET 2.0 服务器控件与组件开发高级编程》这本书充满了期待。我希望它能引领我深入理解 ASP.NET 2.0 的内部工作机制,掌握创建高性能、可重用控件和组件的关键技术。然而,在深入阅读后,我发现本书的内容更多地集中在如何“利用”ASP.NET 2.0 提供的丰富控件和框架来构建应用程序,而不是去“创造”和“重构”这些底层组件。书中对数据绑定控件的讲解非常详尽,提供了大量的例子来展示如何将数据绑定到 GridView、DetailsView、FormView 等控件上,以及如何使用各种数据源控件。这些内容对于快速开发 CRUD 应用程序非常有用,但对于我这样希望深入理解数据绑定控件内部实现原理的人来说,却显得不够深入。我渴望了解,当数据源发生变化时,控件是如何感知并更新 UI 的?ViewState 是如何被用来保存控件的状态和数据绑定信息?或者,如何在控件的生命周期中插入自定义逻辑,以实现更高级的数据处理和渲染效果?例如,创建一个能够处理大规模数据集的虚拟化 GridView,或者一个能够支持复杂交互逻辑的自定义数据输入控件。同样,在组件开发方面,书中虽然提到了用户控件和自定义控件的创建,但给出的示例相对基础,更多的是关于如何组合现有控件,或者如何为控件添加一些简单的自定义属性和方法。我希望能看到更多关于如何设计能够处理复杂业务逻辑、提供灵活配置选项、以及能够实现高效状态管理的组件的深入讨论。例如,如何创建一个能够处理多步骤向导式输入的组件,或者一个能够与客户端 JavaScript 进行深度集成的交互式图表组件。

评分

我一直以来都对 ASP.NET 2.0 的服务器控件开发有着浓厚的兴趣,希望能在这方面有所精进,尤其是在组件化和高级编程方面。这本书《ASP.NET 2.0 服务器控件与组件开发高级编程》的标题,让我觉得找到了我一直以来追寻的方向。我期待在这本书中学习到如何从零开始设计和实现复杂的服务器控件,如何理解控件的生命周期,以及如何创建可重用、可配置的组件来提高开发效率。然而,在我仔细阅读这本书后,我发现它更侧重于如何“使用”和“扩展”ASP.NET 2.0 已经提供的强大功能,而不是去“创造”和“重构”这些功能。例如,书中在讲解数据绑定控件时,提供了大量的例子来展示如何将数据库中的数据绑定到 Repeater、DataList、GridView 等控件上,并介绍了如何使用 LinqDataSource、ObjectDataSource 等数据源控件。这些内容固然实用,能够帮助开发者快速搭建数据驱动的应用程序,但我更想了解的是,这些数据绑定控件在内部是如何工作的?当数据源发生变化时,它们是如何检测到并触发 UI 更新的?以及,在进行数据绑定时,如何才能实现更精细的控制,例如在绑定前对数据进行动态转换,或者在绑定后对特定单元格进行自定义渲染?书中对于这些底层细节的阐述相对较少。同样,在组件开发方面,书中虽然提到了用户控件和自定义控件的创建,但给出的示例大多是比较基础的,例如一个简单的带有自定义属性的文本框,或者一个能够显示特定信息的标签。我更希望能够看到如何设计一个具有复杂交互逻辑的组件,例如一个能够处理复杂表单验证、提供多级级联选择,或者能够实现拖放操作的 UI 组件。此外,对于组件的封装和重用,书中虽然强调了封装的重要性,但并没有深入到如何构建一套完整的组件库,或者如何设计能够应对多种业务场景的灵活组件。

评分

我对 ASP.NET 2.0 的服务器控件和组件开发领域一直有着强烈的好奇心和学习动力,渴望能够掌握这方面的“高级编程”技巧,打造出高效、可复用的软件组件。《ASP.NET 2.0 服务器控件与组件开发高级编程》这本书的标题,正是我所寻找的目标。然而,在翻阅和学习的过程中,我发现本书的侧重点与我预期的“高级开发”存在一定的偏差。它更像是一本关于如何“使用”和“配置”ASP.NET 2.0 平台提供的丰富控件,来快速构建功能性应用程序的指南,而不是深入剖析控件和组件的“创造”过程。例如,书中花费了大量篇幅介绍如何使用已有的数据绑定控件,如 GridView、DetailsView、FormView 等,以及如何与各种数据源控件(如 SqlDataSource、ObjectDataSource)集成,并提供了非常实用的数据排序、过滤、分页等功能的实现方法。这些内容对于快速实现数据驱动的 Web 应用无疑非常有帮助。但是,我更想了解的是,当一个数据绑定控件被渲染时,它在幕后是如何工作的?它的生命周期具体包含哪些阶段?我可以在哪个阶段插入自定义逻辑来影响数据的呈现,或者如何有效地管理 ViewState 以确保用户输入的有效性?书中对于这些底层机制的讲解,显得比较浅显,未能提供足够深入的洞察。同样,在组件开发方面,本书虽然介绍了用户控件(User Controls)和自定义控件(Custom Controls)的创建,但所提供的示例往往是相对简单的,例如创建带有自定义属性的文本框,或者一个简单的用户列表显示控件。我更期待看到的是如何设计和实现更复杂的、具有高度封装性和可扩展性的组件,例如一个能够处理多步骤表单提交的向导组件,或者一个能够动态生成表格结构并支持行内编辑的复杂数据表格控件。

评分

在看到《ASP.NET 2.0 服务器控件与组件开发高级编程》这本书的书名时,我满怀希望地认为它会为我打开一扇通往 ASP.NET 2.0 服务器控件和组件开发深层次世界的大门。我期待能在这本书中学习到如何设计、实现和优化可重用的服务器控件和组件,深入理解 ASP.NET 2.0 的事件模型、生命周期管理以及状态维护机制。然而,在深入阅读之后,我发现本书的内容似乎更多地侧重于如何利用 ASP.NET 2.0 已经提供的丰富控件和开发模式,来高效地构建应用程序,而不是去深入探究控件和组件的底层实现原理。举例来说,书中对 GridView 控件的介绍,详细阐述了如何通过各种属性和方法来控制其显示、编辑、删除和分页等功能,并提供了许多实用的代码示例。这些内容对于快速开发功能完善的数据展示界面非常有帮助。但是,我更希望了解的是,当用户点击分页按钮时,GridView 控件内部是如何触发数据请求的?它是如何管理 ViewState 来保存当前页码和排序状态的?以及,如果我想自定义 GridView 的某一行或某一列的渲染方式,我需要在控件的哪个生命周期阶段进行干预?书中对于这些底层机制的讲解相对较少,更多的是停留在 API 的使用层面。同样,在组件开发方面,书中提供了如何创建用户控件(User Controls)和自定义控件(Custom Controls)的入门指南,但对于如何设计可扩展、可配置的复杂组件,例如一个能够独立处理业务逻辑、数据访问和 UI 渲染的通用数据访问组件,或者一个能够与客户端 JavaScript 深度交互的动态 UI 组件,本书的指导显得有些不足。我希望能看到更多关于如何通过继承、组合以及设计模式来构建更具健壮性和可维护性的组件库的深入讨论。

评分

我一直以来都对 ASP.NET 2.0 的服务器控件开发有着极大的热情,尤其希望能够在这个领域深入钻研,成为一名能够独立设计和实现高级服务器控件和组件的开发者。《ASP.NET 2.0 服务器控件与组件开发高级编程》这本书的标题,正好契合了我对这方面知识的需求。然而,在阅读了这本书的部分内容后,我发现它的侧重点与我原先的预期有所不同。这本书更多地聚焦于如何“使用”和“配置”ASP.NET 2.0 已经提供的强大控件和开发模式,来高效地构建应用程序,而不是去深入剖析控件和组件的“创造”和“重构”的底层原理。例如,书中在讲解数据绑定控件的运用时,提供了大量的代码示例,展示了如何将数据库中的数据绑定到 GridView、DetailsView、FormView 等控件上,并详细介绍了如何使用 LinqDataSource、ObjectDataSource 等数据源控件,以及如何实现数据排序、过滤和分页功能。这些内容对于快速开发数据驱动的 Web 应用确实非常有帮助,但对于我这样希望深入理解数据绑定控件内部工作机制的人来说,则显得不够深入。我渴望了解,当数据源发生变化时,控件是如何感知并触发 UI 更新的?ViewState 是如何被用来保存控件的状态和数据的?或者,我可以在控件的生命周期中如何进行更精细的控制,以实现更高级的 UI 行为,例如动态生成列,或者在数据绑定过程中对数据进行复杂的转换?书中对于这些底层细节的阐述相对较少。同样,在组件开发方面,书中虽然提到了用户控件和自定义控件的创建,但所给出的示例大多是比较基础的,例如一个简单的带有自定义属性的文本框,或者一个能够显示特定信息的标签。我更希望能够看到如何设计一个具有复杂交互逻辑的组件,例如一个能够处理复杂表单验证、提供多级级联选择,或者能够实现拖放操作的 UI 组件。

评分

作为一名长期从事 Web 开发的工程师,我对 ASP.NET 2.0 的服务器控件和组件开发一直抱有浓厚的兴趣,并渴望能够在这方面达到“高级编程”的境界。当我看到《ASP.NET 2.0 服务器控件与组件开发高级编程》这本书时,我满怀期待地认为它将带领我深入理解 ASP.NET 2.0 的控件生命周期,掌握组件设计模式,并学会如何创建高效、可复用的服务器控件。然而,在仔细阅读本书后,我发现它的内容更侧重于如何“应用”和“组合”ASP.NET 2.0 已经提供的强大功能,来快速构建企业级应用程序,而不是去深入探究控件和组件的“创建”和“优化”的底层机制。书中对数据绑定控件的介绍,非常详细地讲解了如何将数据库中的数据绑定到 GridView、DetailsView、FormView 等控件,以及如何使用 LinqDataSource、ObjectDataSource 等数据源控件,并提供了许多关于数据排序、过滤、分页等实用功能的示例。这些内容对于快速开发具有数据展示和编辑功能的页面非常有帮助。但是,我更希望了解的是,当用户与这些控件交互时(例如点击分页按钮),控件内部是如何处理这些请求的?ViewState 是如何被用于保存控件的状态和数据的?或者,我可以在控件的生命周期中如何进行更精细的控制,以实现更高级的 UI 行为,例如动态生成列,或者在数据绑定过程中对数据进行复杂的转换?书中对于这些底层细节的阐述相对较少。同样,在组件开发方面,书中虽然提到了用户控件和自定义控件的创建,但所给出的示例通常比较基础,更多的是关于如何封装现有控件的属性和方法,或者如何为控件添加一些自定义的 UI 元素。我更期待看到的是如何设计和实现能够处理复杂业务逻辑、提供灵活配置选项、以及能够实现高效状态管理的组件。例如,一个能够处理多步骤表单提交的向导式组件,或者一个能够提供复杂用户交互的自定义 UI 组件。

评分

错译颇多

评分

今天拿到的书,三指厚。o my dog.

评分

今天拿到的书,三指厚。o my dog.

评分

错译颇多

评分

错译颇多

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 onlinetoolsland.com All Rights Reserved. 本本书屋 版权所有