ASP.NET 2.0服务器控件与组件开发高级编程txt,chm,pdf,epub,mobi下载 作者:库斯拉维 出版社: 人民邮电 出版年: 2007-6 页数: 1145 定价: 148.00元 ISBN: 9787115159908 内容简介 · · · · · ·《ASP.NET 2.0服务器控件与组件开发高级编程》是一本专门介绍服务器控件和组件的开发与使用的图书。全书共分为33章,分别介绍了Ajax控件和组件、ASP.NET 2.0 Web部件控件、ASP.NET 2.0安全、ASP.NET 2.0表格式和分层式数据源控件、ASP.NET 2.0表格式数据绑定控件、自定义架构导入扩展和ISerializable接口、基于提供程序的服务等内容。 目录 · · · · · ·第1章 ASP.NET 2.0框架...... 11.1 请求过程...... 1 1.2 为什么开发自定义组件...... 4 1.2.1 数据源控件...... 5 · · · · · ·() 第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 2.0服务器控件与组件开发高级编程"试读 · · · · · · |
这本书内容不错,推荐大家购买观看
觉得不错
非常经典的著作
看完,超赞