《ASP.NET MVC 4 实战》 - 学习笔记

《ASP.NET MVC 4 实战》设计模式

========== ========== ==========
[做者] (美) Jeffrey Palermo (美) Jimmy Bogard (美) Eric Hexter (美) Matthew Hinze (英) Jeremy Skinner
[译者] (中) 徐燕萍 李萍 林逸
[出版] 人民邮电出版社
[版次] 2014年05月 第1版
[印次] 2014年05月 第1次 印刷
[订价] 69.00元
========== ========== ==========浏览器

【第01章】 安全

(P003) 服务器

Web 本质上是无状态的。架构

【第02章】 app

(P015) 框架

框架是如何知道将 URL 映射到一个特定的控制器动做的?答案就在 Global.asax 文件的 RegisterRoutes 方法中。函数

Web API 是微软随 ASP.NET MVC 4 一块儿发布的一个 Web 服务框架。工具

(P016) 布局

ViewBag 本质上是一个字典 —— 它提供了一种存储数据的方式,这些数据随后可以在视图中进行访问。

(P017)

@ 前缀表示 HTML 与代码之间的转换。

【第03章】

(P032)

视图的职责看似很简单。它的生存目标是取得一个送给它的模型,并用这个模型来渲染内容。因为控制器及相关服务已经执行了全部业务逻辑,并将结果包装成一个模型对象,故视图只须要知道如何取得这一模型,并把它转换成 HTML 。

(P033)

能够调用 View 方法的第二个重载版原本接受一个明确的视图名。

(P034)

可以将数据传递给视图的三种不一样方式,即便用 ViewDataDictionary (视图数据字典) 、 ViewBag (视图包) ,以及强类型视图。

(P035)

只要从字典接受数据,就必须执行类型转换。

(P036)

为了使用强类型视图,首先必须确保控制器动做适当地设置了 ViewData.Model 。

(P037)

Razor 的多行代码语句是以 @ 后跟开花括号字符开始的 : @{ 。

(P038)

数据在渲染到屏幕以前是默认自动编码的。若要显示未编码信息,可使用 Html.Raw 方法来强迫渲染原始文本。

(P043)

对于简单的显示模型和编译器模型, EditorForModel 和 DisplayForModel 方法可能就够了。

【第04章】

(P051)

IController 接口定义了控制器最基本的元素 —— 一个单一的 Execute 方法,它接收一个 RequestContext 对象。

ControllerBase 类直接实现 IController ,但只包含了咱们曾考察的几个特性所必需的基础架构。

(P052)

Controller 类继承于 ControllerBase ,所以它包含了 ControllerBase 所定义的属性 (如 ViewData) ,但它还增长了大量的附加功能。

(P053)

更好的作法是依靠视图,以使表现逻辑与控制器分离开来。这更易于修改应用程序的用户界面,而无需改变控制器代码。

动做方法选择器是一种注解属性,它能够用来对动做方法进行修饰或标注。

选择器的名称老是 XXXAttribute 形式的,但在使用时,须要将 Attribute 部分去掉。

(P057)

请记住,调用 ModelState.IsValid 并未真正执行验证,它只是检查验证是否已经成功或失败,验证自己是在调用控制器动做以前发生的。

(P060)

每一个测试都有三个阶段 —— Arrange (准备) 、 Act (动做) 、 Assert (断言) 。

【第05章】

(P067)

视图模型的目的十分简单 —— 它是一个专门为用于视图而设计的模型。它提供了一个创建在域模型之上的简化接口,以保持视图决策最小化。

(P068)

为了使视图尽量是可维护的,它应该尽量简化 —— 复杂的循环和计算逻辑应该在更高层执行,视图惟一应该作的只是显示这种计算的结果。

(P070)

控制器与视图共享了一个 ViewDataDictionary 类型的对象,其名称为 ViewData 。

【第06章】

(P076)

服务器是保护数据、防止劣质输入的最后一道防线。

【第07章】

(P088)

如今有许多流行的 JavaScript 库 (包括 jQuery 、 Prototype 、 MooTools 和 Dojo 等) ,全部这些都是为了让 JavaScript 更易于使用,并辅助跨浏览器的 JavaScript 功能标准化。

在使用 jQuery 时,主要是使用 jQuery 函数 (基本上是使用别名符号 “$”) ,它可以根据其上下文执行各类不一样的操做。

当把一个字符串传递给 “$” 函数时, jQuery 会将其视为 CSS 的选择器,并尝试在页面中找出与该选择器匹配的任何元素。

“#” 表示元素的 id 标签属性。

“.” 表示元素的 class 标签属性。

空格表示子元素。

(P089)

最好将全部事件绑定和 jQuery 代码都包含到 ready 处理程序之中。

(P092)

只有启用了 JavaScript 的浏览器才能向服务器发送 Ajax 请求,不然只能发送常规的 HTTP 请求。

(P095)

因为 JavaScript 是将函数做为对象来使用的,因此 this 关键字的含义并不老是显而易见的,由于它是上下文敏感的。

(P098)

对 BeginForm 的调用会渲染表单的开标签,而 using 语句的闭括号会渲染 <form /> 的闭标签。

【第08章】

(P113)

认证确保用户已提供了适当的访问系统所需的凭据。一旦用户登陆,那么他们即是已认证的了。

受权发生在认证以后,且包括对给定用户是否有权对系统作某事的决策。当用户访问一个其余人不可用的资源时,必须获得明确的受权。

(P118)

决不相信输入。决不、永远、永远也别指望输入是安全的。不管是人类用户或是机器,危险的输入都是陷入 XSS 攻击的根源。

HTML 编码是将 HTML 转换成文本,这种 HTML 会被浏览器解释成渲染时再也不解释的符号。

【第09章】

(P129)

经过使用路由, URL 彻底可以与底层实现解耦。

(P131)

对于 URL ,大小是有关系的,并且是越小越好。

(P136)

路由处理程序是实现 IRouteHandler 接口的类,并负责构造适当的 HTTP 处理程序,以便为所选路由处理请求。

【第10章】

(P157)

为了建立一个类型的实例,你必须经过开泛型类型建立一个闭泛型类型。

【第11章】

(P173)

利用 AutoMapper 让开发人员可以只写一次代码,而后只要用一个声明,就能够在不少地方运用它。

【第12章】

(P174)

注重保持控制器轻量级是重要的。

(P175)

减轻控制器负担的快速方式是去除其责任。

(P177)

重构不会让事情简单不少,但一个简单的更改可能会明显下降圈复杂度,而且可以减轻与复杂控制器关联在一块儿的测试努力和维护负担。

【第13章】

(P193)

T4MVC 是一个强大的工具,它可以消除 ASP.NET MVC 应用程序中的许多魔术字符串激增问题。

【第14章】

(P194)

Nuget 是随 MVC 一块儿安装的,并使得 MVC 开发更容易。

【第15章】

(P208)

NHibernate 要求至少有一个映射。

(P209)

Log4Net.config 文件含有 log4net 的配置信息,该信息普遍适用于任何类型的应用程序。

【第16章】

(P222)

框架包含一个 ControllerBase 类,它为管理 ViewData 和 TempData 提供了最基本的属性。

(P223)

动做是控制各个服务器请求主逻辑的方法,但并非一个控制器类的全部方法都有资格做为一个动做。

(P230)

动做有助于你轻松地讲单个控制器分解成一些基本功能,而动做过滤器则为在动做执行以前或以后插入一些代码提供了挂接手段。动做选择器为动做调用器提供了应选择哪个动做执行的线索,而动做结果有助于封装重复的渲染逻辑。

【第17章】

(P233)

布局也能够相互嵌套,所以,能够为整个网站的通用模板定义一个泛型网站级布局。更具体的布局而后能够定义更具体的模板和新的内容块。

当多个视图共享公用内容时,运用布局是最好的方式。而后能够把 (视图) 内容推送给布局,每一个视图只须要提供本身的内容片段。

(P234)

渲染分部的机制很简单,能够在一个父视图中使用 RenderPartial 方法或 Partial 方法。

即便不与其余视图进行内容共享,分部也能够用来简化和减小视图中的标记量。

(P235)

Html.RenderPartial() 是一个无返回方法,它当即将分部渲染到响应流。而 Html.Partial() 返回一个字符串被当即渲染到视图。

在 Razor 中, Html.RenderPartial 必须放在一个代码块中。

(P237)

常规控制器动做与子动做之间的惟一区别就是这个 ChildActionOnly 注解属性。

【第18章】

(P247)

做为开发者,常常容易受到技术细节、设计模式,以及创建优雅的可维护体系结构等方面的困扰,而忽略关注事情的真正本质 —— 解决用户的问题。若是应用程序不能实际工做,即便有最可维护的代码,对用户也是毫无帮助的。

(P248)

知道什么时候或何处才适合使用一种技术或工具,与知道如何使用这一技术是同等重要的。

(P251)

DI 容器本质上是一个智能工厂。像其余工厂类同样,其职责是建立对象的实例,但它也知道如何实例化对象的依赖性。

(P253)

任何对基础结构的某种外部依赖性均可以用一种很好的候选办法来实现,这种办法就是将这种依赖性提取出来,造成一个由控制器使用的接口。

【第19章】

(P261)

Nuget 包是一个简单的 zip 文件,它含有一个清单和须要安装到 Visual Studio 项目中的文件。它还包含了三个 PowerShell 脚本,用于在安装、卸载和项目启动期间实现自动化。Nuget 包是经过其 ID 进行标识的,这是一个用以惟一标识包及其版本号的字符串。清单文件含有如下方面的信息 : 安装期间须要添加到项目的文件、依赖包列表,以及包括做者、项目网站 URL 和许可 URL 等信息的附加元数据。

相关文章
相关标签/搜索