第1章 应用程序和页面架构 1
1.1 应用程序的位置选项 1
1.1.1 内置的Web服务器 2
1.1.2 IIS 3
1.1.3 FTP 3
1.1.4 Web站点需要FrontPage Extensions 4
1.2 ASP.NET页面结构选项 5
1.2.1 内联编码 6
1.2.2 隐藏代码模型 8
1.3 ASP.NET 4的Page指令 10
1.3.1 @Page指令 11
1.3.2 @Master指令 13
1.3.3 @Control指令 14
1.3.4 @Import指令 15
1.3.5 @Implements指令 17
1.3.6 @Register指令 17
1.3.7 @Assembly指令 18
1.3.8 @PreviousPageType指令 18
1.3.9 @MasterType指令 18
1.3.10 @OutputCache指令 19
1.3.11 @Reference指令 19
1.4 ASP.NET的页面事件 19
1.5 处理回送 21
1.6 跨页面的传送 22
1.7 ASP.NET应用程序文件夹 27
1.7.1 App_Code文件夹 28
1.7.2 App_Data文件夹 32
1.7.3 App_Themes文件夹 32
1.7.4 App_GlobalResources文件夹 32
1.7.5 App_LocalResources文件夹 32
1.7.6 App_WebReferences文件夹 33
1.7.7 App_Browsers文件夹 33
1.8 编译 33
1.9 Build Provider 36
1.9.1 使用内置的Build Provider 38
1.9.2 使用自己的Build Provider 38
1.10 Global.asax 43
1.11 通过Visual Studio 2010使用类 47
1.12 本章小结 50
第2章 ASP.NET服务器控件和客户端脚本 51
2.1 ASP.NET服务器控件 51
2.1.1 服务器控件的类型 52
2.1.2 使用服务器控件构建页面 53
2.1.3 处理服务器控件的事件 54
2.2 给服务器控件应用样式 56
2.2.1 研究控件的常见属性 56
2.2.2 使用层叠样式表改变样式 57
2.3 CSS在ASP.NET 4中的改变 60
2.4 HTML服务器控件 61
2.4.1 HtmlControl基类 62
2.4.2 HtmlContainerControl类 63
2.4.3 所有的HTML类 63
2.4.4 使用HtmlGenericControl类 64
2.5 识别ASP.NET服务器控件 65
2.6 通过JavaScript处理页面和服务器控件 67
2.6.1 使用Page.ClientScript.RegisterClientScriptBlock 69
2.6.2 使用Page.ClientScript.RegisterStartupScript 70
2.6.3 使用Page.ClientScript.RegisterClientScriptInclude 72
2.7 客户端回调 72
2.7.1 比较典型的回送和回调 73
2.7.2 使用回调功能:一种简单的方法 75
2.7.3 使用带一个参数的回调功能 79
2.7.4 使用回调功能:一个复杂的例子 82
2.8 本章小结 86
第3章 ASP.NET Web服务器控件 87
3.1 Web服务器控件概述 87
3.2 Label服务器控件 88
3.3 Literal服务器控件 90
3.4 TextBox服务器控件 91
3.4.1 使用Focus()方法 91
3.4.2 使用AutoPostBack 92
3.4.3 使用AutoCompleteType 93
3.5 Button服务器控件 94
3.5.1 CausesValidation属性 94
3.5.2 CommandName属性 94
3.5.3 使用客户端JavaScript的按钮 95
3.6 LinkButton服务器控件 97
3.7 ImageButton服务器控件 97
3.8 HyperLink服务器控件 99
3.9 DropDownList服务器控件 99
3.10 从集合中可视化地删除数据项 101
3.11 ListBox服务器控件 103
3.11.1 允许用户选择多项 103
3.11.2 使用ListBox控件的例子 103
3.11.3 给集合添加项 105
3.12 CheckBox服务器控件 106
3.12.1 如何确定复选框是否被选中 107
3.12.2 给复选框赋值 107
3.12.3 排列复选框的文本 108
3.13 CheckBoxList服务器控件 108
3.14 RadioButton服务器控件 110
3.15 RadioButtonList服务器控件 112
3.16 Image服务器控件 113
3.17 Table服务器控件 114
3.18 Calendar服务器控件 116
3.18.1 从Calendar控件中选择一个日期 117
3.18.2 从Calendar控件中选择要输出的日期格式 118
3.18.3 选择日期、星期或月份 118
3.18.4 使用日期范围 119
3.18.5 修改日历的样式和操作方式 120
3.19 AdRotator服务器控件 123
3.20 Xml服务器控件 125
3.21 Panel服务器控件 126
3.22 PlaceHolder服务器控件 128
3.23 BulletedList服务器控件 128
3.24 HiddenField服务器控件 133
3.25 FileUpload服务器控件 134
3.25.1 使用FileUpload控件上传文件 134
3.25.2 给上传文件指定正确的ASP.NET权限 137
3.25.3 理解文件大小的限制 138
3.25.4 从同一个页面上传多个文件 139
3.25.5 把上传的文件放在Stream对象中 142
3.25.6 把文件内容从Stream对象移到Byte数组中 142
3.26 MultiView和View服务器控件 142
3.27 Wizard服务器控件 146
3.27.1 定制边栏导航 147
3.27.2 AllowReturn属性 148
3.27.3 使用StepType属性 148
3.27.4 给Wizard控件添加标题 148
3.27.5 使用向导的导航系统 149
3.27.6 使用Wizard控件的事件 150
3.27.7 使用Wizard控件显示窗体元素 151
3.28 ImageMap服务器控件 155
3.29 Chart服务器控件 157
3.30 本章小结 160
第4章 验证服务器控件 161
4.1 有效性验证 161
4.2 客户端和服务器端的验证 162
4.3 ASP.NET验证服务器控件 163
4.3.1 验证原因 164
4.3.2 RequiredFieldValidator服务器控件 164
4.3.3 CompareValidator服务器控件 169
4.3.4 RangeValidator服务器控件 172
4.3.5 RegularExpressionValidator服务器控件 175
4.3.6 CustomValidator服务器控件 176
4.3.7 ValidationSummary服务器控件 180
4.4 关闭客户端验证功能 183
4.5 为错误通知使用图像和声音 184
4.6 使用验证组 185
4.7 本章小结 188
第5章 使用母版页 189
5.1 需要母版页的原因 189
5.2 母版页基础 191
5.3 编写母版页 192
5.4 编写内容页面 195
5.4.1 混合页面类型和语言 198
5.4.2 指定要使用的母版页 200
5.4.3 使用页面标题 201
5.4.4 使用母版页中的控件和属性 201
5.5 在母版页中指定默认内容 207
5.6 以编程方式将母版页赋予内容页面 209
5.7 母版页的嵌套 210
5.8 浏览器特定的母版页 213
5.9 事件的触发顺序 214
5.10 高速缓存母版页 215
5.11 AS P.NET AJAX和母版页 215
5.12 本章小结 218
第6章 主题和外观 219
6.1 使用ASP.NET中的主题 219
6.1.1 给单个ASP.NET页面应用主题 219
6.1.2 把主题应用于整个应用程序 221
6.1.3 删除服务器控件中的主题 221
6.1.4 删除Web页面上的主题 222
6.1.5 使用母版页时理解主题 222
6.1.6 理解StyleSheetTheme属性 223
6.2 创建自己的主题 223
6.2.1 创建正确的文件夹结构 223
6.2.2 创建外观 224
6.2.3 在主题中包含CSS文件 226
6.2.4 使主题包含图像 228
6.3 定义多个外观选项 230
6.4 编程使用主题 232
6.4.1 以编程方式指定页面的主题 232
6.4.2 编程指定控件的SkinID 233
6.5 主题、外观和定制控件 233
6.6 本章小结 236
第7章 ASP.NET 4中的数据绑定 237
7.1 数据源控件 237
7.1.1 SqlDataSource控件 239
7.1.2 AccessDataSource控件 247
7.1.3 LinqDataSource控件 248
7.1.4 EntityDataSource控件 253
7.1.5 XmlDataSource控件 255
7.1.5 ObjectDataSource控件 256
7.1.6 SiteMapDataSource控件 259
7.2 数据源控件的高速缓存 259
7.3 存储连接信息 260
7.4 组合使用绑定的列表控件和数据源控件 262
7.4.1 GridView控件 262
7.4.2 编辑GridView中的数据行 275
7.4.3 删除GridView数据 282
7.4.4 GridView的其他格式化功能 284
7.4.5 DetailsView控件 284
7.4.6 使用DetailsView插入、更新和删除数据 288
7.4.7 ListView控件 290
7.4.8 FormView控件 297
7.5 其他数据绑定控件 301
7.5.1 TreeView控件 301
7.5.2 AdRotator控件 302
7.5.3 Menu控件 302
7.6 内联数据绑定语法 303
7.6.1 数据绑定语法 303
7.6.2 XML数据绑定 304
7.7 表达式和表达式生成器 304
7.8 本章小结 309
第8章 使用ADO.NET管理数据 311
8.1 ADO.NET的基本功能 312
8.1.1 常见的ADO.NET任务 312
8.1.2 ADO.NET的基本名称空间和类 316
8.1.3 使用Connection对象 317
8.1.4 使用Command对象 319
8.1.5 使用DataReader对象 320
8.1.6 使用DataAdapter对象 322
8.1.7 使用参数 324
8.1.8 了解DataSet和DataTable 327
8.1.9 将Oracle用作ASP.NET的数据库 331
8.2 DataList服务器控件 332
8.2.1 可用的模板 333
8.2.2 使用ItemTemplate 333
8.2.3 使用其他布局模板 336
8.2.4 使用多个列 338
8.3 ListView服务器控件 339
8.3.1 连接ListView到数据库 339
8.3.2 创建布局模板 340
8.3.3 创建ItemTemplate 342
8.3.4 创建EditItemTemplate 343
8.3.5 创建EmptyItemTemplate 344
8.3.6 创建InsertItemTemplate 344
8.3.7 查看结果 344
8.4 将Visual Studio用于ADO.NET任务 346
8.4.1 建立与数据源的连接 346
8.4.2 使用DataSet设计器 347
8.4.3 使用DataSet对象CustomerOrders 352
8.5 命令的异步执行 355
8.5.1 SqlCommand类的异步方法 355
8.5.2 IAsyncResult接口 357
8.5.3 AsyncCallback 357
8.5.4 WaitHandle类 357
8.5.5 ADO.NET中异步处理的方式 358
8.5.6 取消异步处理 373
8.5.7 异步连接 373
8.6 本章小结 374
第9章 使用LINQ查询 375
9.1 LINQ to Objects 375
9.1.1 传统的查询方法 375
9.1.2 使用LINQ替代传统的查询 382
9.1.3 数据分组 388
9.1.4 使用其他LINQ运算符 389
9.1.5 建立LINQ连接 389
9.1.6 使用LINQ分页 391
9.2 LINQ to XML 391
9.3 LINQ to SQL 396
9.3.1 通过LINQ插入、更新和删除查询 403
9.3.2 扩展LINQ 406
9.4 本章小结 406
第10章 使用XML和LINQ to XML 409
10.1 XML的基础知识 410
10.1.1 XML InfoSet 412
10.1.2 XSD/XML模式定义 413
10.1.3 在Visual Studio 2010中编辑XML和XML模式 414
10.2 XmlReader和XmlWriter 417
10.2.1 使用XDocument替代XmlReader 419
10.2.2 使用模式和XmlTextReader 420
10.2.3 使用XDocument根据模式来验证 422
10.2.4 包含NameTable优化 423
10.2.5 从XML中提取.NET CLR类型 425
10.2.6 ReadSubtree和XmlSerialization 426
10.2.7 通过LINQ to XML从XML中创建CLR对象 428
10.2.8 使用XmlWriter创建XML 428
10.2.9 使用LINQ for XML创建XML 431
10.2.10 XmlReader和XmlWriter的改进 433
10.3 XmlDocument和XPathDocument 434
10.3.1 DOM存在的问题 434
10.3.2 XPath、XpathDocument和XmlDocument 434
10.4 DataSet 438
10.4.1 将DataSet保存到XML中 438
10.4.2 XmlDataDocument 440
10.5 XmlDataSource控件 441
10.6 XSLT 444
10.6.1 XslCompiledTransform 446
10.6.2 XSLT调试 450
10.7 数据库和XML 450
10.7.1 FOR XML AUTO子句 451
10.7.2 SQL Server和XML数据类型 455
10.8 本章小结 460
第11章 提供程序模型概述 463
11.1 提供程序概述 464
11.2 ASP.NET 4中的提供程序模型 465
11.2.1 设置提供程序以使用Microsoft SQL Server 7.0、2000、2005或2008 466
11.2.2 成员资格提供程序 472
11.2.3 角色提供程序 475
11.2.4 个性化提供程序 479
11.2.5 站点地图提供程序 480
11.2.6 会话状态提供程序 481
11.2.7 Web事件提供程序 484
11.2.8 Configuration提供程序 491
11.2.9 Web Parts提供程序 493
11.3 提供程序的配置 495
11.4 本章小结 495
第12章 扩展提供程序模型 497
12.1 提供程序是较大体系结构中的一层 497
12.2 通过基于属性的编程修改提供程序的行为 498
12.2.1 通过SqlMembershipProvider建立简单的密码结构 498
12.2.2 通过SqlMembershipProvider建立强类型的密码结构 501
12.3 ProviderBase类 502
12.4 建立自己的提供程序 503
12.4.1 创建CustomProviders应用程序 504
12.4.2 构造需要的类架构 504
12.4.3 创建XML用户数据存储 508
12.4.4 在web.config文件中定义提供程序实例 508
12.4.5 没有实现MembershipProvider类的方法和属性 509
12.4.6 实现MembershipProvider类的方法和属性 510
12.4.7 使用XmlMembership-Provider进行用户登录 516
12.5 扩展预定义的提供程序 517
12.5.1 用新的LimitedSql-RoleProvider提供程序限制角色功能 518
12.5.2 使用新的LimitedSqlRoleProvider提供程序 521
12.6 本章小结 524
第13章 站点导航 525
13.1 基于XML的站点地图 525
13.2 SiteMapPath服务器控件 527
13.2.1 PathSeparator属性 529
13.2.2 PathDirection属性 531
13.2.3 ParentLevelsDisplayed属性 531
13.2.4 ShowToolTips属性 532
13.2.5 SiteMapPath控件的子元素 532
13.3 TreeView服务器控件 533
13.3.1 标识TreeView控件的内置样式 536
13.3.2 研究TreeView控件的各个部分 537
13.3.3 将TreeView控件绑定到XML文件上 538
13.3.4 在TreeView中选择多个选项 540
13.3.5 在TreeView控件中指定定制的图标 542
13.3.6 指定用于连接节点的线 544
13.3.7 以编程方式使用TreeView控件 545
13.4 Menu服务器控件 550
13.4.1 对Menu控件应用不同的样式 551
13.4.2 Menu事件 556
13.4.3 把Menu控件绑定到XML文件上 556
13.5 SiteMap数据提供程序 558
13.5.1 ShowStartingNode属性 558
13.5.2 StartFromCurrentNode属性 559
13.5.3 StartingNodeOffset属性 560
13.5.4 StartingNodeUrl属性 560
13.6 SiteMap API 561
13.7 URL映射 563
13.8 站点地图的本地化 564
13.8.1 为本地化构建Web.sitemap文件 564
13.8.2 修改Web.config文件 565
13.8.3 创建程序集资源(.resx)文件 565
13.8.4 测试结果 566
13.9 安全补偿 567
13.9.1 启动管理员的角色管理功能 567
13.9.2 建立管理员的配置部分 569
13.9.3 启用安全补偿功能 570
13.10 嵌套站点地图文件 572
13.11 本章小结 573
第14章 个性化 575
14.1 个性化模型 575
14.2 创建个性化属性 576
14.2.1 添加简单的个性化属性 577
14.2.2 使用个性化属性 577
14.2.3 添加一组个性化属性 580
14.2.4 使用分组的个性化属性 581
14.2.5 为个性化属性定义类型 582
14.2.6 使用定制的类型 582
14.2.7 提供默认值 585
14.2.8 把个性化属性指定为只读 585
14.3 匿名个性化 585
14.3.1 支持终端用户的匿名身份 586
14.3.2 使用匿名身份识别事件 588
14.3.3 个性化属性的匿名选项 589
14.3.4 有关匿名用户配置信息的警告 590
14.4 编程访问个性化功能 590
14.4.1 迁移匿名用户 591
14.4.2 配置信息的个性化 592
14.4.3 确定是否继续自动保存配置信息值 593
14.5 个性化提供程序 594
14.5.1 使用SQL Server Express Edition 594
14.5.2 使用Microsoft的SQL Server 7.0/2000/2005/2008 595
14.5.3 使用多个提供程序 597
14.6 管理应用程序的配置信息 597
14.6.1 ProfileManager类的属性 598
14.6.2 ProfileManager类的方法 598
14.6.3 建立ProfileManager.aspx页面 599
14.6.4 研究ProfileManager.aspx页面的代码 601
14.6.5 运行ProfileManager.aspx页面 602
14.7 本章小结 603
第15章 成员资格和角色管理 605
15.1 ASP.NET 4的身份验证 606
15.1.1 为成员资格建立Web站点 606
15.1.2 添加用户 608
15.1.3 请求凭据 621
15.1.4 处理验证用户 628
15.2 显示在线用户数 630
15.3 ASP.NET 4的授权 636
15.3.1 使用LoginView服务器控件 636
15.3.2 为角色管理建立Web站点 638
15.3.3 添加和检索应用程序角色 641
15.3.4 删除角色 643
15.3.5 给角色添加用户 643
15.3.6 获取某个角色的所有用户 644
15.3.7 获取包含某个用户的所有角色 645
15.3.8 从角色中删除用户 646
15.3.9 检查角色中的用户 647
15.3.10 角色的高速缓存方式 648
15.4 使用Web Site Administration Tool 648
15.5 成员资格API的公有方法 649
15.6 角色API的公有方法 650
15.7 本章小结 650
第16章 Portal Framework和Web Part 651
16.1 Web Part简介 651
16.2 建立动态的模块化Web站点 653
16.2.1 WebPartManager控件 653
16.2.2 使用区域布局 654
16.2.3 WebPartZone控件 657
16.2.4 允许用户改变页面的模式 659
16.2.5 修改区域 668
16.3 使用Portal Framework中的类 674
16.4 创建定制的Web Part 677
16.5 连接Web Part 681
16.5.1 建立提供程序Web Part 682
16.5.2 建立用户Web Part 685
16.5.3 连接ASP.NET页面上的Web Part 686
16.5.4 理解连接Web Part时处理母版页的难点 689
16.6 本章小结 690
第17章 使用ASP.NET进行HTML和CSS设计 691
17.1 警告 692
17.2 HTML和CSS概述 692
17.2.1 创建样式表 693
17.2.2 CSS规则 696
17.2.3 CSS继承 703
17.2.4 元素的布局和定位 704
17.2.5 在Visual Studio中使用HTML和CSS 711
17.3 本章小结 717
第18章 ASP.NET AJAX 719
18.1 理解对AJAX的需求 719
18.1.1 AJAX出现之前的请求/响应过程 720
18.1.2 AJAX改变了请求/响应过程 721
18.2 ASP.NET AJAX和Visual Studio 2010 723
18.2.1 客户端技术 723
18.2.2 服务器端技术 724
18.2.3 使用ASP.NET AJAX进行开发 725
18.3 创建ASP.NET AJAX应用程序 725
18.3.1 建立没有使用AJAX的简单ASP.NET页面 727
18.3.2 建立使用AJAX的简单ASP.NET页面 728
18.4 ASP.NET AJAX的服务器端控件 733
18.4.1 ScriptManager控件 733
18.4.2 ScriptManagerProxy控件 735
18.4.3 Timer控件 736
18.4.4 UpdatePanel控件 738
18.4.5 UpdateProgress控件 741
18.5 使用多个UpdatePanel控件 744
18.6 使用页面历史记录 747
18.7 脚本合并 752
18.8 本章小结 756
第19章 ASP.NET AJAX控件工具集 757
19.1 下载和安装AJAX控件工具集 758
19.2 ASP.NET AJAX控件 760
19.2.1 ASP.NET AJAX控件工具集的扩展程序 761
19.2.2 ASP.NET AJAX控件工具集中的服务器控件 805
19.3 本章小结 815
第20章 安全性 817
20.1 应用身份验证措施 818
20.1.1 <authentication>节点 819
20.1.2 基于Windows的身份验证 819
20.1.3 基于表单的身份验证 826
20.1.4 Passport身份验证 834
20.2 验证特定的文件和文件夹 834
20.3 编程授权 835
20.3.1 使用User.Identity属性 835
20.3.2 使用User.IsInRole()方法 837
20.3.3 使用WindowsIdentity显示更多信息 837
20.4 身份和模拟 840
20.5 通过IIS进行保护 841
20.5.1 IP地址和域名限制 842
20.5.2 使用文件扩展名 843
20.5.3 使用ASP.NET MMC管理单元 845
20.5.4 使用IIS 7.0 Manager 845
20.6 本章小结 846
第21章 状态管理 847
21.1 如何选择会话状态 847
21.2 理解ASP.NET中的Session对象 849
21.2.1 会话和事件模型 850
21.2.2 配置会话状态的管理 851
21.2.3 进程中的会话状态 851
21.2.4 进程外的会话状态 859
21.2.5 SQL支持的会话状态 864
21.2.6 使用其他提供程序扩展会话状态 866
21.2.7 无cookie的会话状态 867
21.2.8 选择维护状态的正确方式 868
21.3 Application对象 869
21.4 查询字符串 870
21.5 cookie 870
21.6 回送和跨页面的回送 870
21.7 隐藏的字段、ViewState和ControlState 873
21.8 为短时间状态存储应用HttpContext.Current.Items 876
21.9 本章小结 878
第22章 高速缓存 879
22.1 高速缓存 879
22.1.1 输出高速缓存 879
22.1.2 部分页面(UserControl)的高速缓存 883
22.1.3 Post-Cache Substitution 884
22.1.4 HttpCachePolicy和客户端高速缓存 886
22.2 使用编程方式进行高速缓存 888
22.2.1 使用Cache对象高速缓存数据 888
22.2.2 控制ASP.NET高速缓存 888
22.2.3 高速缓存依赖性 889
22.2.4 .NET 4中新的对象高速缓存选项 894
22.3 使用SQL Server高速缓存依赖性 896
22.3.1 使数据库支持SQL Server高速缓存禁用功能 897
22.3.2 使表支持SQL Server高速缓存禁用功能 898
22.3.3 对SQL Server 2000的影响 898
22.3.4 查看支持SQL高速缓存禁用功能的表 899
22.3.5 使表不支持SQL Server高速缓存禁用功能 899
22.3.6 使数据库不支持SQL Server高速缓存禁用功能 899
22.3.7 SQL Server 2005和2008高速缓存禁用功能 900
22.4 配置ASP.NET应用程序 901
22.5 测试SQL Server高速缓存禁用功能 902
22.5.1 给页面添加多个表 904
22.5.2 给SQL Server高速缓存依赖性和Request对象建立关联 904
22.5.3 给SQL Server高速缓存依赖性和Cache对象建立关联 905
22.6 本章小结 908
第23章 调试和错误处理技术 909
23.1 设计期间的支持 909
23.1.1 语法通知 910
23.1.2 Immediate和Command窗口 911
23.1.3 任务列表 912
23.2 跟踪 912
23.2.1 System.Diagnostics.Trace和ASP.NET的Page.Trace 913
23.2.2 页面级的跟踪 913
23.2.3 应用程序的跟踪 913
23.2.4 查看跟踪数据 913
23.2.5 在组件中跟踪 916
23.2.6 跟踪的传送 918
23.2.7 TraceListener 918
23.2.8 诊断选项 922
23.2.9 Web事件 923
23.3 调试 925
23.3.1 需要的内容 925
23.3.2 IIS和ASP.NET开发服务器 926
23.3.3 启动调试会话 927
23.3.4 有助于调试的工具 929
23.3.5 使用IntelliTrace执行历史调试 932
23.3.6 调试多个线程 933
23.3.7 客户端的Javascript调试 934
23.3.8 SQL存储过程的调试 936
23.4 异常和错误处理 937
23.4.1 处理页面上的异常 937
23.4.2 处理应用程序异常 938
23.4.3 HTTP状态码 938
23.5 本章小结 940
第24章 文件I/O和流 941
24.1 使用驱动器、目录和文件 941
24.1.1 DriveInfo类 942
24.1.2 Directory和DirectoryInfo类 945
24.1.3 File和FileInfo类 952
24.1.4 使用路径 958
24.1.5 文件和目录的属性、特性和访问控制列表 962
24.2 读写文件 969
24.2.1 Stream类 969
24.2.2 Reader和Writer类 976
24.2.3 压缩流 981
24.2.4 内存映射文件 983
24.3 处理串行端口 985
24.4 网络通信 987
24.4.1 WebRequest和WebResponse 988
24.4.2 发送邮件 994
24.5 本章小结 994
第25章 用户控件和服务器控件 997
25.1 用户控件 997
25.1.1 创建用户控件 998
25.1.2 与用户控件交互 1000
25.1.3 动态加载用户控件 1001
25.2 服务器控件 1006
25.2.1 Server Control项目的建立 1006
25.2.2 控件的特性 1011
25.2.3 控件的显示 1012
25.2.4 添加标记特性 1015
25.2.5 关于控件ID 1016
25.2.5 给HTML设置样式 1017
25.2.6 主题和外观 1020
25.2.7 添加客户端功能 1021
25.2.8 浏览器功能 1029
25.2.9 使用ViewState 1032
25.2.10 引发回送事件 1035
25.2.11 处理回送数据 1038
25.2.12 复合控件 1041
25.2.13 模板化控件 1043
25.2.14 在设计期间创建控件 1048
25.3 本章小结 1065
第26章 模块和处理程序 1067
26.1 处理HTTP请求 1067
26.1.1 IIS 6和ASP.NET 1067
26.1.2 IIS 7和ASP.NET 1068
26.1.3 ASP.NET请求处理 1069
26.2 HttpModule 1069
26.3 HttpHandler 1073
26.3.1 一般的处理程序 1074
26.3.2 在IIS中映射文件扩展名 1078
26.4 本章小结 1080
第27章 ASP.NET MVC 1081
27.1 MVC的定义 1081
27.2 当今Web上的MVC 1082
27.3 MVC和ASP.NET 1083
27.3.1 为方法而不是文件服务 1083
27.3.2 ASP.NET MVC是否是Web Forms 4.0 1084
27.3.3 为什么不是WebForms 1084
27.3.4 ASP.NET MVC是完全不同的 1085
27.3.5 为什么“(ASP.NET>ASP.NET MVC)==True” 1085
27.3.6 约定胜于配置 1086
27.3.7 第三个请求是Charm 1089
27.4 理解路由和URL 1091
27.4.1 路由选择与URL重写的比较 1092
27.4.2 路由的定义 1092
27.5 控制器 1096
27.5.1 控制器的定义:IController接口 1096
27.5.2 控制器类和操作 1097
27.5.3 处理参数 1098
27.5.4 处理多个参数 1098
27.6 视图 1099
27.6.1 指定视图 1100
27.6.2 强类型化视图 1101
27.6.3 使用HTML辅助方法 1102
27.6.4 HtmlHelper类和扩展方法 1102
27.7 本章小结 1103
第28章 使用业务对象 1105
28.1 使用ASP.NET 4中的业务对象 1105
28.1.1 创建预编译的.NET业务对象 1106
28.1.2 在ASP.NET应用程序中使用预编译的业务对象 1108
28.2 COM互操作性:在.NET中使用COM 1109
28.2.1 RCW 1109
28.2.2 在ASP.NET代码中使用COM对象 1110
28.2.3 错误处理 1115
28.2.4 使用.NET应用程序部署COM组件 1117
28.3 在非托管代码中使用.NET 1119
28.3.1 CCW 1119
28.3.2 在COM对象中使用.NET组件 1121
28.3.3 早期绑定和后期绑定 1124
28.3.4 错误处理 1125
28.4 使用COM应用程序部署.NET组件 1126
28.5 本章小结 1128
第29章 ADO.NET Entity Framework 1129
29.1 能否使用同一种语言 1130
29.1.1 概念层和逻辑层 1131
29.1.2 层之间的映射 1131
29.2 创建第一个实体数据模型 1131
29.2.1 使用EDM向导 1132
29.2.2 使用ADO.NET实体设计器 1134
29.2.3 使用EDM建立ASP.NET页面 1135
29.3 理解关系 1137
29.3.1 一对一和一对多关系 1137
29.3.2 多对一和多对多关系 1141
29.4 在EDM中使用继承功能 1143
29.5 使用存储过程 1146
29.6 使用EntityDataSource控件 1150
29.6.1 创建基本页面 1150
29.6.2 配置数据源控件 1151
29.7 本章小结 1154
第30章 ASP.NET Dynamic Data 1155
30.1 使用Visual Studio 2010创建基本应用程序 1155
30.1.1 查看默认应用程序中创建的核心文件 1156
30.1.2 Dynamic Data应用程序 1157
30.1.3 连接数据库 1163
30.1.4 在Global.asax文件中注册数据模型 1166
30.1.5 样式和布局 1167
30.1.6 运行应用程序的结果 1168
30.2 使用动态数据路由 1170
30.3 控制显示方式 1174
30.4 向已有页面中添加动态数据 1176
30.5 本章小结 1178
第31章 使用服务 1179
31.1 不同系统之间的通信 1179
31.2 建立一个简单的XML Web服务 1181
31.2.1 WebService页面指令 1182
31.2.2 查看Web服务的基类文件 1182
31.2.3 把定制的数据集显示为SOAP 1184
31.2.4 XML Web服务接口 1186
31.3 使用简单的XML Web服务 1188
31.3.1 添加Web引用 1189
31.3.2 在客户端应用程序中调用Web服务 1190
31.4 WebMethod的重载 1192
31.5 高速缓存Web服务的响应 1195
31.6 使用SOAP报头 1196
31.6.1 使用SOAP报头建立Web服务 1196
31.6.2 通过SOAP报头使用Web服务 1198
31.6.3 使用SOAP 1.2请求Web服务 1200
31.7 异步使用Web服务 1202
31.8 WCF 1204
31.8.1 迈向SOA的一大步 1204
31.8.2 WCF概述 1205
31.8.3 建立WCF服务 1206
31.9 建立WCF使用者 1212
31.9.1 添加服务引用 1212
31.9.2 使用数据合同 1215
31.9.3 定义名称空间 1220
31.10 使用WCF数据服务 1220
31.10.1 创建第一个服务 1221
31.10.2 添加实体数据模型 1221
31.10.3 创建服务 1223
31.10.4 查询接口 1228
31.10.5 读取表中数据 1229
31.10.6 从表中读取指定的项 1230
31.10.7 使用关系 1232
31.10.8 扩展关联 1234
31.10.9 对结果集排序 1237
31.10.10 移动结果集 1238
31.10.11 筛选内容 1239
31.10.12 在ASP.NET中使用WCF数据服务 1240
31.11 本章小结 1243
第32章 应用程序的国际化 1245
32.1 区域性和地区 1245
32.1.1 了解区域性类型 1246
32.1.2 ASP.NET线程 1247
32.1.3 服务器端的区域性声明 1249
32.1.4 客户端的区域性声明 1250
32.1.5 翻译值和行为 1251
32.2 ASP.NET 4资源文件 1258
32.2.1 使用本地资源 1258
32.2.2 使用全局资源 1264
32.3 资源编辑器 1266
32.4 本章小结 1266
第33章 配置 1267
33.1 配置概述 1267
33.1.1 服务器配置文件 1268
33.1.2 应用程序配置文件 1271
33.1.3 应用配置设置 1271
33.1.4 检测配置文件的改动 1272
33.1.5 配置文件的格式 1272
33.2 公共配置设置 1273
33.2.1 连接字符串 1273
33.2.2 配置会话状态 1274
33.2.3 编译配置 1278
33.2.4 浏览器的功能 1280
33.2.5 定制错误 1282
33.2.6 身份验证 1283
33.2.7 匿名身份 1286
33.2.8 授权 1287
33.2.9 锁定配置设置 1289
33.2.10 ASP.NET页面配置 1289
33.2.11 包含文件 1291
33.2.12 配置ASP.NET运行时设置 1292
33.2.13 配置ASP.NET工作者进程 1294
33.2.14 存储与应用程序相关的设置 1297
33.2.15 配置文件的编程 1297
33.2.16 保护配置设置 1303
33.2.17 编辑配置文件 1307
33.3 创建定制部分 1309
33.3.1 使用NameValueFileSection-Handler对象 1309
33.3.2 使用DictionarySection-Handler对象 1310
33.3.3 使用SingleTagSection-Handler对象 1311
33.3.4 使用定制的配置处理程序 1312
33.4 本章小结 1314
第34章 检测 1315
34.1 使用事件日志 1315
34.1.1 读取事件日志 1316
34.1.2 写入事件日志 1318
34.2 使用性能计数器 1321
34.2.1 通过管理工具查看性能计数器 1321
34.2.2 建立基于浏览器的管理工具 1323
34.3 应用程序的跟踪 1328
34.4 理解健康监控 1328
34.4.1 健康监控系统的提供程序模型 1329
34.4.2 健康监控的配置 1330
34.4.3 通过配置写入事件:运行示例 1336
34.4.4 把事件路由到SQL Server中 1337
34.4.5 缓冲Web事件 1340
34.4.6 通过电子邮件发送Web事件 1342
34.5 本章小结 1346
第35章 管理 1347
35.1 ASP.NET Web站点管理工具 1347
35.1.1 Home选项卡 1348
35.1.2 Security选项卡 1349
35.1.3 Application选项卡 1357
35.1.4 Provider选项卡 1360
35.2 在Windows 7的IIS中配置ASP.NET 1361
35.2.1 .NET Compilation 1362
35.2.2 .NET Globalization 1363
35.2.3 .NET Profile 1363
35.2.4 .NET Roles 1363
35.2.5 .NET Trust Levels 1364
35.2.6 .NET Users 1364
35.2.7 Application Settings 1365
35.2.8 Connection Strings 1366
35.2.9 Pages and Controls 1366
35.2.10 Providers 1366
35.2.11 Session State 1367
35.2.12 SMTP E-mail 1368
35.3 本章小结 1368
第36章 打包和部署ASP.NET应用程序 1369
36.1 部署各个部分 1369
36.2 部署之前的准备步骤 1370
36.3 部署Web应用程序的方法 1371
36.3.1 使用XCOPY 1371
36.3.2 使用VS Copy Web Site选项 1373
36.3.3 部署预编译的Web应用程序 1376
36.3.4 创建ASP.NET Web Package 1377
36.3.5 建立安装程序 1380
36.4 安装程序的选项 1387
36.4.1 使用部署项目的属性 1387
36.4.2 File System编辑器 1390
36.4.3 Registry编辑器 1393
36.4.4 File Types编辑器 1394
36.4.5 User Interface编辑器 1394
37.4.6 Custom Actions编辑器 1396
36.4.7 Launch Conditions编辑器 1397
36.5 本章小结 1397
附录A 迁移ASP.NET旧项目 1399
A.1 迁移过程并不困难 1399
A.1.1 同时运行.NET Framework的多个版本 1400
A.1.2 升级ASP.NET应用程序 1400
A.2 混合版本——表单验证 1401
A.3 升级——ASP.NET的保留文件夹 1402
A.4 ASP.NET4页面是XHTML 1403
A.5 在ASP.NET 4中没有硬编码的.js文件 1404
A.6 在Visual Studio 2010中转换ASP.NET 1.x应用程序 1405
A.7 从ASP.NET 2.0/3.5迁移到ASP.NET 4 1408
A.8 本章小结 1409
附录B ASP.NET终极工具 1411
B.1 简化调试 1411
B.1.1 Firebug 1411
B.1.2 YSlow 1412
B.1.3 IE8 Developer Tools和Firefox WebDeveloper 1413
B.1.4 jQuery和jQuery UI 1415
B.1.5 探查器:dotTrace或ANTS 1416
B.2 参考资料 1416
B.2.1 PositionlsEverything.net、QuirksMode.org和HTMLDog.com 1417
B.2.2 Visibone 1417
B.2.3 www.asp.net 1417
B.3 整理代码 1418
B.3.1 来自DevExpress的Refactor! for ASP.NET 1418
B.3.2 Code Style Enforcer 1418
B.3.3 Microsoft Ajax Minifier——JavaScript最小化工具 1419
B.4 扩展ASP.NET 1420
B.4.1 ASP.NET AJAX控件工具集 1420
B.4.2 Atif Aziz的ELMAH——错误记录模块和处理程序 1421
B.4.3 Helicon的ISAPI_Rewrite和IIS7 URLRewrite 1422
B.5 通用的开发人员工具 1423
B.5.1 Telerik的联机代码转换器 1423
B.5.2 WinMerge和其他合并工具 1424
B.5.3 Reflector 1425
B.5.4 Process Explorer 1426
B.6 本章小结 1427
附录C Silverlight 3和ASP.NET 1429
C.1 入门 1429
C.2 使用Silverlight插件 1432
C.3 Silverlight和JavaScript 1440
C.3.1 JavaScript API 1440
C.3.2 HTML Bridge 1442
C.4 本章小结 1448
附录D 动态类型与语言 1451
D.1 隐式类型 1451
D.2 动态语言运行时 1452
D.3 动态查找 1454
D.4 本章小结 1458
附录E ASP.NET联机资源 1459
E.1 作者的博客和Twitter ID 1459
E.2 ASP.NET方面有影响力的博客 1459
E.3 Web站点 1459
E.4 Twitter上值得关注的人员 1460