第1篇 体验篇 3
第1章 初识ASP.NET 3.5 MVC开发 3
1.1 ASP.NET 3.5 MVC概述 4
1.1.1 为什么使用ASP.NET 3.5 MVC框架 4
1.1.2 基本概念 5
1.1.3 ASP.NET 3.5 MVC框架的特点 6
1.2 初创ASP.NET 3.5 MVC应用项目 7
1.2.1 约定的目录结构 9
1.2.2 执行过程 12
1.2.3 构建模型 13
1.2.4 控制器 15
1.2.5 创建视图 19
1.3 URL路由 27
1.3.1 URL路由设置 27
1.3.2 使用URL路由 31
1.4 思考与提高 32
第2章 路由进阶 33
2.1 解读Default.aspx页面 34
2.1.1 Default.aspx页面不被路由解析 34
2.1.2 路由解析Default.aspx页面 35
2.2 路由匹配监测 36
2.2.1 路由匹配监测器 36
2.2.2 路由解析Default.aspx页面的监测 37
2.2.3 添加路由 38
2.3 设置路由的扩展方法 40
2.3.1 Route类 40
2.3.2 RouteCollection类 41
2.3.3 MapRoute()扩展方法 43
2.3.4 优化路由设置 44
2.4 自定义路由约束 45
2.4.1 添加自定义路由约束类 45
2.4.2 设置路由 48
2.4.3 运行界面 49
2.5 路由解析分析 50
2.5.1 路由解析管道 50
2.5.2 UrlRoutingModule类 51
2.5.3 IRouteHandler接口 55
2.5.4 IHttpHandler接口 56
2.6 在Web Form项目中使用路由 59
2.6.1 WebFormRouteHandler类 59
2.6.2 配置全局应用程序类 60
2.6.3 运行界面 60
2.7 思考与提高 62
第3章 HtmlHelper控件解析 63
3.1 HtmlHelper概述 64
3.1.1 HtmlHelper类 64
3.1.2 视图中的HTML属性 64
3.2 FormExtensions类 65
3.2.1 BeginForm 65
3.2.2 BeginRouteForm 67
3.2.3 EndForm 67
3.3 InputExtensions类 68
3.3.1 CheckBox 68
3.3.2 Hidden 70
3.3.3 Password 70
3.3.4 RadioButton 71
3.3.5 TextBox 72
3.4 LinkExtensions类 73
3.4.1 ActionLink 73
3.4.2 RouteLink 74
3.5 RenderPartialExtensions类 75
3.6 SelectExtensions类 76
3.6.1 DropDownList 77
3.6.2 ListBox 79
3.7 TextAreaExtensions类 80
3.8 ValidationExtensions类 81
3.8.1 ValidationMessage 82
3.8.2 ValidationSummary 82
3.9 思考与提高 90
第4章 自定义GridView控件开发 91
4.1 扩展方法概述 92
4.1.1 定义扩展方法 92
4.1.2 使用扩展方法 93
4.1.3 泛型的扩展方法 94
4.2 Html TextWriter类概述 97
4.2.1 创建HtmlTextWriter类 97
4.2.2 RenderBeginTag()和RenderEndTag()方法 97
4.2.3 AddAttribute()方法 98
4.3 GridView控件开发 98
4.3.1 GridView控件的基本功能 98
4.3.2 构建分页列表 99
4.3.3 构建LINQ查询的扩展方法 100
4.3.4 构建GridViewOption类 102
4.3.5 构建GridViewHelper类 104
4.3.6 LINQ动态查询 109
4.3.7 GridView的使用方法 110
4.4 思考与提高 112
第5章 自定义视图引擎 113
5.1 正则表达式概述 114
5.1.1 正则表达式 114
5.1.2 语法规则 115
5.2 自定义视图引擎 115
5.2.1 创建自己的视图引擎 115
5.2.2 创建自己的视图 116
5.2.3 创建其他类 122
5.2.4 配置全局应用程序类 125
5.2.5 自定义视图引擎的运行 125
5.3 思考与提高 128
第6章 图表开发 129
6.1 MSChart图表控件概述 130
6.1.1 图表类型 130
6.1.2 财务分析 139
6.1.3 统计分析 139
6.2 使用MSChart图表控件 140
6.2.1 下载、安装相关软件 140
6.2.2 创建MvcChart项目 141
6.2.3 模型构建 142
6.2.4 如何实现控制器 144
6.2.5 如何实现视图 151
6.2.6 MvcChart项目的运行 152
6.3 思考与提高 152
第7章 大、中型ASP.NET 3.5 MVC项目开发 153
7.1 个性化目录结构 154
7.1.1 目录结构 154
7.1.2 个性化ASP.NET 3.5 MVC项目的目录结构 155
7.2 控制器分组开发 159
7.2.1 新建ASP.NET 3.5 MVC网站 159
7.2.2 新建路由设置扩展方法 159
7.2.3 新建个性化视图引擎 160
7.2.4 全局应用程序类配置 163
7.2.5 控制器分组项目的结构 164
7.2.6 运行控制器分组项目 164
7.3 思考与提高 166
第8章 过滤器解析、开发 167
8.1 过滤器概述 168
8.1.1 OutputCacheAttribute类 168
8.1.2 AuthorizeAttribute类 171
8.1.3 HandleErrorAttribute类 172
8.2 自定义异常处理过滤器 173
8.2.1 创建网站运行异常监测项目 173
8.2.2 创建WebRequestError EventMvc类 174
8.2.3 创建MyHandleError Attribute类 175
8.2.4 设置web.config配置文件 177
8.2.5 实现异常情况浏览 178
8.2.6 项目运行 181
8.3 思考与提高 182
第9章 控制器与视图之间的数据传递 183
9.1 3种传递数据方法 184
9.1.1 使用ViewData传递数据 184
9.1.2 使用TempData传递数据 185
9.1.3 使用Model传递数据 185
9.2 传递多个数据对象 187
9.3 表单数据绑定 189
9.3.1 通过Request.Form读取表单数据 189
9.3.2 通过FormCollection读取表单数据 190
9.3.3 直接读取表单数据对象 191
9.3.4 自定义数据绑定 192
9.4 思考与提高 198
第10章 jQuery视图开发 199
10.1 jQuery概述 200
10.1.1 安装jQuery智能感知补丁 200
10.1.2 jQuery的主要特点 200
10.2 Datepicker日期选择控件 202
10.2.1 Datepicker日期选择控件概述 202
10.2.2 多种主题的Datepicker日期选择控件 202
10.2.3 设计个性化主题的Datepicker日期控件 204
10.2.4 Datepicker日期控件使用简介 206
10.3 jqGrid表格控件 209
10.3.1 引入jqGrid表格控件 209
10.3.2 设置jqGrid表格控件 210
10.3.3 模型构建 211
10.3.4 实现JSON数据 211
10.3.5 jqGrid表格控件的运行 214
10.4 通过用户控件开发Ajax应用 215
10.4.1 模型构建 217
10.4.2 构建控制器 218
10.4.3 实现视图 220
10.5 通过jQuery开发Ajax应用 224
10.5.1 jQuery中的Ajax函数 224
10.5.2 程序的运行界面 226
10.5.3 设置JSON数据 227
10.5.4 实现jQuery代码 228
10.6 思考与提高 230
第11章 多项目混合开发 231
11.1 混合开发概述 232
11.1.1 Visual Studio 2008中提供的项目类别 232
11.1.2 开发与ASP.NET 3.5 MVC项目相关的混合项目 232
11.2 在ASP.NET 3.5 MVC项目中添加Web Forms 233
11.2.1 新建动态数据Web应用程序 233
11.2.2 新建ASP.NET 3.5 MVC项目MvcHybridDemo 234
11.2.3 在ASP.NET 3.5 MVC项目中添加动态数据Web应用程序 235
11.2.4 在ASP.NET 3.5 MVC项目中添加Web Forms页面 240
11.3 在Web Form项目中添加ASP.NET 3.5 MVC项目 242
11.3.1 新建ASP.NET 3.5 MVC项目 242
11.3.2 新建Web Form项目 243
11.3.3 在Web Form项目中添加ASP.NET 3.5 MVC项目 243
11.4 读取Web Form页面数据 247
11.4.1 通过Post表单方式 247
11.4.2 通过Session对象 247
11.5 博客网站的迁移 248
11.5.1 项目结构 248
11.5.2 模型开发 249
11.5.3 控制器开发 250
11.5.4 视图开发 250
11.6 思考与提高 251
第12章 单元测试 253
12.1 单元测试概述 254
12.1.1 单元测试 254
12.1.2 Moq模拟框架 254
12.2 单元测试路由 256
12.2.1 创建测试帮助类 256
12.2.2 设置路由 269
12.2.3 路由的单元测试 269
12.2.4 设置个性化路由 272
12.2.5 个性化路由的单元测试 273
12.2.6 使用Moq简化单元测试 275
12.3 单元测试LINQ to SQL 281
12.3.1 创建“TestLINQ to SQL”项目 281
12.3.2 创建接口INorthWindDataContext 282
12.3.3 添加分部类NorthWindDataContext 283
12.3.4 单元测试NorthWindDataContext类 284
12.3.5 创建接口ICategoryRepository 287
12.3.6 实现CategoryRepository类 288
12.3.7 单元测试CategoryRepository类 289
12.4 单元测试控制器 291
12.4.1 AccountController类 292
12.4.2 AccountControllerTest类 293
12.5 添加其他单元测试框架 306
12.5.1 下载NUnit测试框架 306
12.5.2 下载Rhino Mocks模拟框架 308
12.5.3 复制相关文件 308
12.5.4 设置注册表 308
12.6 思考与提高 310
第13章 网站部署 311
13.1 ASP.NET请求处理过程 312
13.1.1 IIS 5.0中的ASP.NET请求处理过程 312
13.1.2 IIS 6.0中的ASP.NET请求处理过程 312
13.1.3 IIS 7.0中的ASP.NET请求处理过程 313
13.1.4 ASP.NET 3.5 MVC项目在不同版本IIS中的部署 314
13.2 在IIS 6.0中部署ASP.NET 3.5 MVC项目 314
13.2.1 使用.aspx应用程序扩展 315
13.2.2 使用.mvc应用程序扩展 316
13.2.3 配置通配符应用程序映射 318
13.2.4 合理配置通配符应用程序映射 320
13.3 在IIS 7.0中部署ASP.NET 3.5 MVC项目 323
13.3.1 添加网站 323
13.3.2 启动、浏览网站 324
13.4 思考与提高 326
第2篇 架构篇 329
第14章 初识联系人管理网站 329
14.1 网站构建 330
14.1.1 安装项目文件 330
14.1.2 新建网站 331
14.2 页面功能分析 332
14.2.1 首页 333
14.2.2 添加或修改联系人页面 336
14.3 数据库设计 337
14.3.1 数据表 337
14.3.2 存储过程 339
14.4 思考与提高 340
第15章 联系人管理网站初探 341
15.1 二层架构概述 342
15.1.1 二层架构图 342
15.1.2 实现二层架构的Web应用 342
15.2 实现二层架构的联系人管理网站 343
15.2.1 联系人信息 343
15.2.2 地址信息 345
15.2.3 电子邮箱信息 349
15.2.4 电话号码信息 352
15.2.5 添加或修改联系人页面 356
15.3 思考与提高 375
第16章 联系人管理网站进阶 377
16.1 三层架构概述 378
16.1.1 三层架构图 378
16.1.2 实现三层架构的Web应用 379
16.2 实现三层架构的联系人管理网站 379
16.2.1 构建业务对象 379
16.2.2 构建中间数据访问层 382
16.2.3 首页 397
16.2.4 添加或修改联系人页面 401
16.3 思考与提高 401
第17章 联系人管理网站高级实现 403
17.1 多层架构概述 404
17.1.1 多层架构图 404
17.1.2 实现多层架构的Web应用 405
17.2 实现多层架构的联系人管理网站 406
17.2.1 构建业务对象 406
17.2.2 构建数据访问层 406
17.2.3 构建业务逻辑层 408
17.2.4 各逻辑层间的相互关系 412
17.2.5 首页和添加或修改联系人页面 413
17.3 基于LINQ to SQL的多层架构 414
17.3.1 创建对象、关系映射 414
17.3.2 构建基于LINQ的数据访问层 416
17.3.3 实现表现层 429
17.4 思考与提高 430
第3篇 实战篇 433
第18章 博客网站初探 433
18.1 创建多项目的项目模板 434
18.2 创建博客网站 436
18.2.1 安装项目文件 436
18.2.2 新建博客网站 438
18.3 网站的总体结构 438
18.4 页面功能分析 439
18.4.1 首页 439
18.4.2 博客文章BlogArticles.aspx页面 441
18.4.3 按月显示博客随笔或文章BlogByMonth.aspx页面 441
18.4.4 分类显示博客随笔或文章BlogByTag.aspx页面 442
18.4.5 显示分类TagCloud.aspx页面 443
18.4.6 博客随笔或文章BlogEntry.aspx页面 443
18.4.7 博客管理页面 444
18.5 思考与提高 444
第19章 多层架构的博客网站 445
19.1 数据库设计 446
19.1.1 Blogo数据库设计 446
19.1.2 数据表blogentries 446
19.1.3 数据表authors 447
19.1.4 数据表tags 447
19.1.5 数据表blog_tags 447
19.1.6 数据表comments 448
19.1.7 数据表files 448
19.1.8 数据表logs 449
19.2 博客网站的多层架构 449
19.2.1 博客网站的架构设计 449
19.2.2 博客网站的项目目录 450
19.3 构建业务对象项目 451
19.3.1 Author类 451
19.3.2 BlogEntry类 452
19.3.3 Comment类 453
19.3.4 File类 454
19.3.5 Tag类 455
19.3.6 Log类 456
19.3.7 Month类 456
19.3.8 枚举Types 457
19.4 构建数据访问项目 457
19.4.1 创建对象、关系映射 458
19.4.2 实现数据访问层 459
19.5 构建业务逻辑项目 484
19.5.1 AuthorManager类 485
19.5.2 BlogEntryManager类 487
19.5.3 CommentManager类 489
19.5.4 FileManager类 490
19.5.5 LogManager类 492
19.5.6 TagManager类 493
19.6 思考与提高 494
第20章 博客网站页面总体设计 495
20.1 网站页面结构设计 496
20.2 设计母版页 497
20.2.1 设计Page.Master母版页 497
20.2.2 设计Page.Master母版页 500
20.2.3 设计Admin.Master母版页 504
20.3 思考与提高 506
第21章 博客网站页面 507
21.1 配置文件的读写 508
21.2 首页 510
21.3 博客文章BlogArticles.aspx页面 513
21.4 按月显示博客随笔或文章BlogByMonth.aspx页面 515
21.5 分类显示博客随笔或文章BlogByTag.aspx页面 518
21.6 显示分类TagCloud.aspx页面 520
21.7 博客随笔或文章BlogEntry.aspx页面 522
21.8 思考与提高 526
第22章 博客网站管理页面 527
22.1 在随笔或者文章内容中插入图片 528
22.2 管理随笔或文章 529
22.2.1 管理随笔或文章Index.aspx页面 529
22.2.2 修改随笔或文章AdminBlogEdit.aspx页面 531
22.2.3 添加随笔或文章AdminBlogCreate.aspx页面 535
22.3 管理评论 537
22.3.1 管理评论AdminComments.aspx页面 537
22.3.2 修改评论AdminComment Edit.aspx页面 538
22.4 管理分类 540
22.4.1 管理分类AdminTags.aspx页面 540
22.4.2 修改分类AdminTagEdit.aspx页面 541
22.4.3 添加分类AdminTagCreate.aspx页面 542
22.5 管理用户 543
22.5.1 管理用户AdminAuthors.aspx页面 543
22.5.2 修改用户AdminAuthorEdit.aspx页面 544
22.5.3 添加用户AdminAuthorCreate.aspx页面 545
22.6 管理文件 547
22.6.1 管理文件AdminFiles.aspx页面 547
22.6.2 浏览图片AdminFileShow.aspx页面 548
22.6.3 添加文件AdminFileCreate.aspx页面 549
22.7 管理日志 549
22.7.1 管理日志AdminLog.aspx页面 550
22.7.2 浏览日志AdminLogShow.aspx页面 551
22.8 管理基本信息 551
22.9 思考与提高 568
第23章 博客网站安全 569
23.1 成员管理提供程序 570
23.1.1 成员服务架构 570
23.1.2 成员API 571
23.1.3 登录控件 573
23.1.4 提供程序设计模式 574
23.2 个性化成员管理提供程序 574
23.3 个性化错误处理 579
23.4 思考与提高 582