《ASP.NET 2.0伺服器控制項與組件開發高級編程》是2007年人民郵電出版社出版的圖書,作者是庫斯拉維。
基本介紹
- 作者:庫斯拉維
- ISBN:9787115159908
- 頁數:1145
- 定價:148.00元
- 出版社:人民郵電
- 出版時間:2007-6
內容介紹
作品目錄
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