**《ASP.NET MVC 企业级实战》
========== ========== ==========
[作者] (中) 邹琼俊
[出版] 清华大学出版社
[版次] 2017年04月 第1版
[印次] 2019年08月 第6次 印刷
[定价] 89.00元
========== ========== ==========
【第01章】
(P021)
只有在 Lambda 有一个输入参数时,括号才是可选的,否则括号是必需的。
使用空括号指定零个输入参数。
【第02章】
(P037)
EDM 中利用特性来标识实体映射到具体数据数据库中的 TableName ,属性对应的具体表的 ColumnName ,还有主键、外键、默认值等,都用特性来标识。然后通过反射技术, 从 EF 中 edmx 元数据获取数据库表的结构的描述,再根据增删改查操作方法,就可以产生对应的 SQL 语句,然后发送给 ADO.NET 负责从数据库中读取数据,返回给我们的 EF 。
(P042)
禁用延迟的方法有 ToList() 、 FirstOrDefault() 、 Include() 等。
(P048)
IQueryable 其实继承了 IEnumerable 。
EF 不支持复杂类型 (如实体) 的直接检索,只能用简单类型,比如常用的标量类型 string 、 int 和 guid 。
【第03章】
(P083)
控制器的约定大于配置 :
-
Controller 放到 Controllers 文件夹中,并且命名方式以 Controller 结尾;
-
每个 Controller 都对应 View 中的一个文件夹,文件夹的名称跟 Controller 名相同。 Controller 中的方法名都对应一个 View 视图 (非必须,但是建议这么做) 而且 View 的名字跟 Action 的名字相同;
-
控制器必须是非静态类,并且要实现 IController 接口;
- Controller 类型可以放到其他项目中;
视图的相关约定 :
-
所有的视图必须放到 Views 目录下;
-
不同控制器的视图用文件夹进行分割,每个控制器都对应一个视图目录;
-
一般视图名字跟控制器的 Action 相对应 (非必须) ;
- 多个控制器公共的视图放到 Shared 目录中;
【第04章】
(P085)
dynamic 型与 object 型的区别是在使用时它会自动根据数据类型转换,而 object 型则需要自己去强制转换。
(P087)
ViewBag 其实就是 ViewData ,只是多了一层 Dynamic 控制,可以说它是另一种访问 ViewData 的方式。理论上 ViewBag 要比 ViewData 慢一点点,但是几乎可以忽略,所以使用任何方式完全取决于个人的爱好。
(P090)
当前台的 C# 代码有多行时,如果这些代码是连续的,中间没有 HTML 代码隔断,那么只需要开头的一个 @ 符号即可;否则 HTML 代码之后被隔断的 C# 代码开头需要加上 @ 符号。
(P115)
@Html.Editor / @Html.Display 可以通过读取特性值生成 HTML 。
【第05章】
(P134)
Routing 的作用是 :
-
匹配传入的请求 (不匹配服务器物理文件),并将请求映射到 “控制器” 的具体操作 “Action 方法” 和 “参数” 中;
- 调用并执行对应控制器类的 Action 方法;
{controller} 和 {action} 是特定参数名,不能改。
(P135)
不能有两个连续的 URL 参数,参数之间必须有字符隔开。
(P141)
推荐使用 @Scripts.Render 的形式,因为它支持压缩合并和服务器缓存。
(P147)
区域路由注册优先于普通路由注册。
【第06章】
(P181)
@Html.AntiForgeryToken() 只能添加在 Html.BeginForm() 形式声明的表单中,纯 HTML 的