ASP.NET MVC 是微软官方提供的以MVC模式为基础的ASP.NET Web应用程序框架。MVC 将一个Web应用分解为Model、View和Controller,有助于管理复杂的应用程序,并简化了分组开发,使得复杂项目更易维护。
本书共分为12章,以符合初学者思维的方式系统地介绍ASP.NET MVC的应用技巧,并结合实际项目详细地介绍如何基于ASP.NET MVC构建企业项目。通过本书的学习,读者可以全面掌握ASP.NET MVC的开发,并从代码中获取软件开发与架构设计的经验与灵感。
本书具有很大的参考价值,既适合ASP.NET MVC开发初学者阅读,也适合有一定基础的ASP.NET MVC开发人员进行技术强化和经验积累,同时还适合作为高等院校和培训学校相关专业的教学参考书。
本书是一本非常接地气的 .NET Web 开发指导书籍。有别于市面上的同类书籍,它既不像微软官方资料和Demo那样照本宣科,也不像大学教材那样乏味说教。它凝聚了作者在ASP.NET MVC及其相关技术的实际经验,将实战与理论相结合,介绍如何使用ASP.NET MVC来进行企业应用开发,是初学者难得的引路书籍。微云数聚(北京)科技有限公司CEO 张帜
本书所涉及的知识面非常广,内容涵盖了ASP.NET MVC开发中*常使用的技术和框架,由浅入深,易于读者理解和掌握,配合作者精心挑选的例子,实用性强,很具实战参考价值。相信本书讲解的内容能够使您的Web开发水平提升一个台阶。微软高级架构师 Terry Zhou
作者年轻、充满活力,给我*的印象是公司年会上表演的双截棍节目,让我充分相信程序员是多么优秀的职业。作者能够在家人身体欠佳的状况下如期完成本书的编写,可见其毅力多么坚韧。本书能够让初学MVC的读者有很清晰的技术路线,而且配套的Demo基本都是在实际项目中的运用,非常值得研究。深圳市跨境翼电子商务股份有限公司CEO 李君
能够与作者在同一家公司,并一起完成书中的财务对账系统,是一件让人短暂痛苦但回想起来非常开心的事情。作者能坚持写作多年,并将平时学习到的知识在日常工作的项目中进行实战,这需要非常坚韧的毅力。希望本书能够让更多读者看到在企业项目实践中MVC的运用过程,同时也希望作者能够继续坚持拥抱变化。深圳市思创信息技术有限公司总经理 何成
我在公司实际项目中把《ASP.NET MVC企业级实战》列为我们重要的中文参考资料。它覆盖了工作中所有的ASP.NET MVC 技术要点,让我们的新员工顺利过渡到项目中,作者有深厚的编程和教学经验,也尽力把相关问题由浅入深分析清楚,这在MVC的同类书籍中是非常难得的。长沙道好信息科技有限公司技术总监 周尹
序言
ASP.NET MVC 4是目前大部分IT企业使用的Web开发技术,许多互联网公司招聘都明确要求熟悉ASP.NET MVC。最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员根本没有 ASP.NET MVC项目经验,其中包括一些工作了四五年,甚至八年十年的。还有一些.NET程序员对ASP.NET MVC的认知只是停留在大学老师教过、自己学过、以前公司用过……这样的话在公司项目开发过程中往往无法完成一些稍微复杂一点的开发任务或者只能以一种很low的方式来实现一些功能。显然,这些人是无法适应.NET Web开发浪潮的。所以我决定针对公司真实项目用到的ASP.NET MVC技术写一本书,以供打算从事.NET Web开发、无MVC项目经验、MVC不熟或者打算提升.NET Web开发水平的读者学习参考,以便快速适应工作。我是自学.NET的,翻阅过国内外.NET电子书不下百本,感觉书本上说的和企业里面用的完全是两码事。作为一线码农,我希望可以同大家分享工作当中真正有用的知识、技术及技巧。本书以符合初学者思维的方式,系统地介绍ASP.NET MVC的应用技巧,并结合实际项目详细地介绍如何基于ASP.NET MVC构建企业项目。通过本书的学习,读者可以全面掌握ASP.NET MVC的开发,并可以从代码中获取软件开发与架构设计的经验与灵感。本书适合ASP.NET MVC的初学者,欲深入了解ASP.NET MVC开发的软件工程师、系统架构师和软件工程师,以及任何对ASP.NET MVC相关技术感兴趣的读者。书中所载技术均为一线城市中互联网企业所流行的.NET Web开发技术,具有很强的参考价值。本书附带源代码,以供读者参考,便于理解书中的内容,下载地址(注意数字和字母大小写)为:http://pan.baidu.com/s/1dE8X0gp(密码:4gce)如果下载有问题,请电子邮件联系booksaga@163.com,邮件主题为ASP.NET MVC企业级实战。
编 者2017年2月
目 录
第1章 MVC开发前奏 1
1.1 开发环境搭建 1
1.1.1
操作系统和开发工具 1
1.1.2
开发环境配置 3
1.1.3
VS常用快捷键 7
1.1.4
VS技巧 8
1.2 常用辅助开发工具介绍 10
1.2.1
Firebug 10
1.2.2
HttpRequester 12
1.3 知识储备 13
1.3.1
必备知识介绍 13
1.3.2
树立软件开发信心 13
1.4
C#语法新特性 14
1.4.1
C# 2.0 新特性 14
1.4.2
C# 3.0/C# 3.5 新特性 16
1.4.3
C# 4.0新特性 26
1.4.4
C#5.0新特性 28
第2章 Entity Framework 29
2.1
Entity Framework简介 29
2.1.1
与ADO.NET的关系 29
2.1.2
什么是O/R Mapping 29
2.1.3
ORM in EF 30
2.1.4
EF的优缺点 30
2.2
Database First 开发方式 31
2.2.1
创建Dtabase First Demo 31
2.2.2
EF原理 34
2.3
Entity Framework增删改查 37
2.3.1
附加数据库 37
2.3.2
新建项目 39
2.3.3
新增 39
2.3.4
简单查询和延时加载 40
2.3.5
根据条件排序和查询 42
2.3.6
分页查询 43
2.3.7
修改 43
2.3.8
删除 45
2.3.9
批处理 46
2.4
EF查询相关 48
2.4.1
IQueryable与IEnumberable接口的区别 48
2.4.2
LINQ To EF 48
2.4.3
关于EF对象的创建问题 50
2.4.4
关于上下文的使用注意事项 51
2.4.5
EF 跨数据库支持 51
2.5
Model First 开发方式 51
2.5.1
创建Model First Demo 52
2.5.2
经验分享 60
2.6
Code First 开发方式 60
2.6.1
创建Code First Demo 61
2.6.2
关于EF实例的创建问题 68
第3章 初识MVC 69
3.1
MVC简介与三层架构 70
3.1.1
MVC简介 70
3.1.2
三层架构 71
3.2
ASP.NET的两种开发方式 72
3.2.1
ASP.NET开发现状 72
3.2.2
WebForms的开发方式 73
3.2.3
ASP.NET MVC的开发方式 74
3.3 第一个ASP.NET
MVC程序 75
3.3.1
创建项目 75
3.3.2
项目框架结构说明 77
3.3.3
路由映射URL到Action 79
3.3.4
返回string的MVC方法 81
3.3.5
简单了解Razor视图 81
3.3.6
ASP.NET MVC组件之间的关系 82
3.4
MVC的约定 82
3.4.1
控制器的约定大于配置 83
3.4.2
视图的相关约定 83
第4章 MVC进阶 84
4.1
View详解 84
4.1.1
View和Action之间数据传递的方式 84
4.1.2
TempData、ViewData和ViewBag的区别 85
4.2
Razor视图引擎 88
4.2.1
什么是 Razor 88
4.2.2
Razor 语法 89
4.2.3
Razor 布局整体视图模板 92
4.2.4
Razor 布局ViewStart 93
4.2.5
Razor 布局部分视图 93
4.2.6
视图引擎 95
4.2.7
MVC视图的秘密 96
4.3
Controller 98
4.3.1
Action方法参数与返回值 98
4.3.2
Action指定使用视图 100
4.3.3
View和Controller之间的关系 102
4.4
Model和验证 104
4.4.1
Net MVC请求处理流程 104
4.4.2
MVC模型验证 104
4.5
HtmlHelper 111
4.5.1
HtmlHelper的Action、表单标签 112
4.5.2
HtmlHelper的弱类型与强类型方法 113
4.5.3
HtmlHelper的RenderPartial 116
4.5.4
HtmlHelper的RenderAction 116
4.5.5
HtmlHelper扩展方法 117
4.6
ASP.NET MVC分页 118
4.6.1
HtmlHelper 118
4.6.2
局部视图 124
4.6.3
MvcPager 127
4.6.4
第三方UI组件 131
第5章 MVC核心透析 132
5.1
MVC Routing 132
5.1.1
RoutingURL 133
5.1.2
Routing的作用 134
5.1.3
Routing包含字面值的URL 134
5.1.4
Routing测试 135
5.2 异步Ajax 137
5.2.1
传统Ajax实现方式 137
5.2.2
Unobtrusive Ajax使用方式 140
5.2.3
AjaxHelper 141
5.2.4
请求Json数据 144
5.3
MVC Areas 146
5.3.1
Area使用入门 146
5.3.2
Area注册类放到单独程序集 148
5.3.3
Area注册控制器放到单独程序集 150
5.4
MVC Filter 151
5.4.1
Action 152
5.4.2
Result 153
5.4.3
AuthorizeAttribute 157
5.4.4
Exception 158
5.5
MVC整体运行流程 159
5.5.1
进入管道 159
5.5.2
路由注册 162
5.5.3
创建MvcHandler对象 164
5.5.4
执行MvcHandler ProcessRequest方法 166
5.5.5
调用控制器里面的Action方法 169
5.5.6
根据Action方法返回的ActionResult加载View 172
第6章 网站性能和安全优化 175
6.1 缓存 175
6.2 压缩合并css和js 178
6.3 删除无用的视图引擎 179
6.4 使用防伪造令牌来避免CSRF攻击 181
6.5 隐藏ASP.NET MVC版本 182
6.6
Nginx服务器集群 182
6.6.1
Nginx是什么 182
6.6.2
Nginx的应用现状和特点 184
6.6.3
Nginx的事件处理机制 184
6.6.4
Nginx不为人知的特点 186
6.6.5
Nginx的内部模型 186
6.6.6
Nginx如何处理请求 188
6.6.7
Nginx典型的应用场景 188
6.6.8
Nginx的应用 189
6.6.9
Nginx常见配置说明 190
6.6.10
集群案例 195
6.7 常用的Web安全技术手段 197
第7章 NHibernate 199
7.1
NHibernate简介 199
7.1.1
什么是NHibernate 199
7.1.2
NHibernate的架构 199
7.1.3
NHibernate与其Entity Framework框架比较 200
7.2 第一个NHibernate应用程序 201
7.2.1
搭建项目基本框架 201
7.2.2
编写映射文件 206
7.2.3
添加数据访问层类 209
7.2.4
添加业务逻辑层类 210
7.2.5
添加控制器和视图 211
7.3 增删改查询 212
7.4 使用代码映射 213
7.4.1
NHibernate入职Demo 214
7.4.2
NHibernate代码映射高级功能 217
7.5 监听NHibernate生成的SQL 224
7.5.1
使用show_sql 224
7.5.2
使用NHibernateProfile 225
第8章 IoC 、Log4Net和Quartz.Net
228
8.1
Unity 228
8.1.1
获取Unity 228
8.1.2
Unity简介 229
8.1.3
Unity API 229
8.1.4
使用Unity 229
8.2
Spring.Net 234
8.2.1
Web.config中的属性注入 234
8.2.2
在单独的配置文件中构造函数注入 238
8.3
Log4Net 240
8.3.1
配置Log4Net环境 240
8.3.2
Log4Net相关概念 244
8.4
Quartz.Net 244
8.4.1
Quartz.Net概述 244
8.4.2
参考资料 244
8.4.3
Quartz.Net使用示例 245
第9章 分布式技术 256
9.1
WebService 256
9.1.1
创建一个WebService并调用 256
9.1.2
调用天气预报服务 259
9.2
WCF 262
9.2.1
什么是WCF 262
9.2.2
理解面向服务 263
9.2.3
WCF体系架构简介 263
9.2.4
WCF的基础概念介绍 264
9.2.5
创建第一个WCF程序 269
9.2.6
WCF和WebService的区别 276
9.3
Web API 276
9.3.1
创建WebAPI 277
9.3.2
调用WebAPI 278
9.3.3
WebAPI授权 282
9.3.4
WebAPI的调试 285
9.4
Memcached 285
9.4.1
Memcached简介 285
9.4.2
Memcached 基本原理 287
9.4.3
Memcached服务端的安装 288
9.4.4
C#操作Memcached 290
9.5
Redis 292
9.5.1
Redis简介 292
9.5.2
Redis与Memcached的比较 292
9.5.3
Redis环境部署 293
9.5.4
Redis常用数据类型 296
9.5.5
给Redis设置密码 302
9.5.6
Redis主从复制 303
9.6
MongoDB 306
9.6.1
MongoDB简介 306
9.6.2
下载安装和配置 307
9.6.3
使用mongo.exe 执行数据库增删改查操作 311
9.6.4
更多命令 313
9.6.5
MongoDB语法与现有关系型数据库SQL语法比较 315
9.6.6
可视化的客户端管理工具MongoVUE 315
9.6.7
通过C#的samus驱动进行操作 317
9.6.8
索引 320
第10章 站内搜索 323
10.1
SEO 323
10.1.1
SEO简介 323
10.1.2
开发时要考虑SEO 324
10.1.3 关于搜索 326
10.2
Lucene.Net简介和分词 328
10.2.1
Lucene.Net简介 328
10.2.2
分词 329
10.2.3
盘古分词算法的使用 332
10.3
最简单的搜索引擎代码 334
10.4
搜索的第一个版本 340
10.5
搜索的优化版 349
10.5.1
热词统计 349
10.5.2
热门搜索 354
10.5.3
标题和内容都支持搜索并高亮展示 357
10.5.4
与查询、或查询、分页 358
第11章 财务对账系统 366
11.1
需求 366
11.2
前台UI框架搭建 367
11.3
菜单特效 374
11.4
面板折叠和展开 376
11.5
tab多页签支持 379
11.6
Controller和View的交互 381
11.7
增改查匹配 389
11.8
统计报表 407
11.9
服务器端排序 425
11.10
从ASP.NET MVC中导出Excel文件 428
11.10.1
异步导出 429
11.10.2
实时导出 431
11.11
数据同步 432
第12章 通用角色权限管理系统
434
12.1
需求分析 434
12.2
技术选型 434
12.3
数据库设计 435
12.4
架构搭建 439
12.4.1
新建解决方案和项目 439
12.4.2
通用层搭建 441
12.4.3
数据访问层搭建 442
12.4.4
业务逻辑层 459
12.4.5
UI层 465
12.5
功能实现 466
12.5.1
用户登录 466
12.5.2
采用分布式的方式记录异常日志 472
12.5.3
授权 474
12.5.4
增删改查 475
12.6
运行项目 475