========== ========== ==========
[作者] (中) 李发陵 冷亚洪
[出版] 清华大学出版社
[版次] 2017年01月 第1版
[印次] 2017年01月 第1次 印刷
[定价] 47.00元
========== ========== ==========
【第02章】
(P023)
目前, ASP.NET MVC 4 已内置于 Visual Studio 2012 中; ASP.NET MVC 5 已内置于 Visual Studio 2013 中。
ASP.NET MVC 框架为创建基于 MVC 设计模式的 Web 应用程序提供了设计框架和技术基础。它是轻量级的、高度可测试的演示框架,并且它结合了现有的 ASp.NET 特性。 MVC 框架被定义在 System.Web.Mvc 命名空间中,并且是被 System.Web 命名空间所支持的。
(P024)
ASP.NET MVC 框架是基于标准组件的,开发人员可以根据需要分解和替换每个组件。
(P028)
学习一个软件开发框架最有效的方式就是了解并使用它。
(P031)
MVC 5 项目默认使用 Razor 视图引擎来开发项目。
(P034)
在 “@{ / 代码体 / }” 中的代码的每一行都必须以 “;” 结束。
(P035)
输出变量值 (格式 : @变量) 则不需要以 “;” 作为结束符。
如果在 “@” 的前一个字符若是非空白字符,则 MVC 引擎不会对其进行处理。
只有一行语句的表达式,以 “@” 开头,不需要 { } 。
Razor 不支持访问修饰符 (如 public 、 private 等) ,可以在单行代码中定义局部变量。
(P036)
在 “@ {...}” 内部可以输出文本,利用 “@:” 进行单行输出。
(P037)
在 “@ {...}” 内部可以利用 <text/> 进行多行输出。
在 Razor 中使用循环需要加关键字符 “@” ,共有两种方式可以实现循环的效果。
(P039)
视图文件默认的目录为 : Views[ControllerName][ActionName].cshtml
(P040)
一个 Web 应用程序通过 RouteTable 类型的静态只读属性 Routes 维护一个全局的路由表,该属性返回一个 RouteCollection 对象,我们将这个对象称为路由表。
(P050)
多数情况下,会通过一个 Model 对象来处理复杂的参数,如参数为一个对象,这时 DefaultModelBinder 会遍历 Model 对象的属性来绑定参数。
(P052)
如果在 Action 的参数中没有显示指定接收的模型参数,则可以使用显示模型绑定方法获取视图中提取的数据。
UpdateModel 与 TryUpdateModel 都用于显示模型绑定。
(P059)
布局视图为公共视图,文件名通常以下划线开头。
布局视图中可以选择性地使用 @RenderBody() 或 @RenderSection() 方法作为布局占位符,但一个布局视图只能有一个 @RenderBody() ,可以有多个 @RenderSection() 。
由于布局视图的特殊性,决定了布局视图不能直接被控制器的方法调用,需要被其他视图页引用后才能使用。
(P060)
如果视图页中没有显示指定的布局视图,则系统会自动调用 “~/Views/_ViewStart.cshtml” 视图文件中设定的视图页作为布局视图。
分部视图的作用在于一个分部视图的创建可以被多个布局视图和普通视图多次调用。
(P063)
在 ASP.NET MVC 5 中可以使用 BundleTable 打包多个 CSS 文件和 JavaScript 文件,以提高网络加载速度和页面解析速度。
(P065)
在视图文件的相应位置调用 ScriptRender 类和 StyleRender 类的 Render() 方法可以输出打包的资源。
(P081)
HTML 帮助器的常用方法 :
-
@Html.Action() —— 加载指定的分部视图;
- @Html.Partial() @Html.RenderPartial() —— 以 HTML 编码字符串的形式呈现指定的分部视图;
(P094)
Partial 方法的返回值为 MvcHtmlString ,而 RenderPartial 方法的返回值为 void 。
(P095)
UrlHelper 类的常用方法 :
-
@Url.Action() —— 使用指定的操作名称生成操作方法的完全限定 URL ;
-
@Url.Content() —— 将虚拟 (相对) 路径转换为应用程序的绝对路径;
- @Url.Encode() —— 将 URL 字符串中的特殊字符编码为字符实体等效项;
【第03章】
(P106)
对于获取的元素集合,获取其中的某一项 (通过索引指定) 可以使用 eq 、 get(n) 方法或索引号获取。要注意, eq 返回的是 jQuery 对象,而 get(n) 和索引返回的是 DOM 元素对象。对于 jQuery 对象只能使用 jQuery 的方法,而 DOM 对象只能使用 DOM 的方法。
jQuery 用同一函数实现 set 和 get 方法。
(P110)
编写插件的目的是给已经有的一系列方法或函数做一个封装,以便在其他地方重复使用,方便后期的维护。
避免在插件内部使用 “$” 作为 jQuery 对象的别名,而应当使用完整的 “jQuery” 来表示,这样可以避免冲突。
(P125)
AJAX 技术通常用于客户端与服务器端异步交换数据,在交换数据时最常用到的方法是 get 和 post 。
【第04章】
(P139)
实体映射技术作为类与表之间的联系纽带,在 ORM 实现中起着至关重要的作用。
(P141)
多对多映射与一对一和一对多映射不同,它需要借助中间表完成多对多映射信息的保存。
在利用 ORM 技术开发应用程序时,最核心的数据优先处理问题便是 “映射” 。为了成功实现对象与关系之间映射。必须建立的主要文件有 : 映射类 (.cs 文件) 、 映射文件 (.hbm.xml 文件) 以及数据库配置文件 (*.cfg.xml 文件) 。
(P145)
实体数据模型 (EDM) 由三部分组成 : 概念模型由概念架构定义语言来定义,主要描述实体类;存储模型 (又称逻辑模型) 由存储架构定义语言 (.ssdl) 来定义,描述表、列、关系、主键及索引等数据对象;映射由映射规范语言 (.msl) 定义,主要包括存储模型中实体类属性与存储模型中列的对应。
【第06章】
(P194)
一位专家曾经说过 : “所有结构良好的面向对象构架都具有清晰的层次定义,每个层次通过一个定义良好的、受控的接口向外提供了一组内聚的服务” 。
(P203)
如果说数据层是积木,那逻辑层就是对这些积木的搭建。
(P205)
在实际项目开发过程中设计数据库时,会为每张表设计一个与业务无关的主键,这主要是因为 :
-
为了唯一地标识表中的每一条记录,加快检索的速度;
- 建立外键约束。为了保证数据的完整性,在数据库表中建立外键是保证数据有效性的方法之一,建立外键的前提条件是建立主表的主键;
(P217)
框架级的 UI 层一般提供公共的、使用频率非常高的界面使用方式,它是系统与用户通信与交流的平台,离用户最近,将直接影响用户对系统的评价结果。作为一个软件架构,不但应该包含底层的功能,还应该包含 UI 层的公共配置,如皮肤、样式等。
【第09章】
(P255)
基于角色的访问控制方法 (RBAC) 有以下两大显著特征 :
-
由于 角色 / 权限 之间的变化比 角色 / 用户 之间的变化相对要慢得多,减少了授权管理的复杂性,降低了管理开销哦;
- 灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性;
(P258)
要实现基于 RBAC 的权限管理,需要用户 (User) 、角色 (Role) 和系统功能模块 (SystemFunction) 三个类。它们之间的映射关系如下 :
-
User 与 Role 之间的关系为多对多,即一个用户可以有多个角色,一个角色对应多个用户;
- Role 与 SystemFunction 之间的关系为多对多,即一个角色包括多个功能模块,一个功能模块可允许多个角色使用;
**