ASP.NET MVC 4 In Action 学习笔记

第1章 绪论

1.1 ASP.NET MVC 是什么

第2章 第一个MVC应用程序

2.2.1APP_Data目录

App_Data目录可以用来存放数据库、XML文件,或应用程序所需的其他数据。
ASP.NET运行时能理解这种特殊目录,并会阻止用户直接访问其中的文件。只有应用程序才可以读写该目录。

2.2.2Conetnt目录

Content目录的目的是包含需要随应用程序一起部署的各种非编码资源。这些资源包括图像和CSS(样式表)文件等。默认情况下,Content目录含有项目所使用的默认样式表(Site.CSS),以及themes子目录,其中含有jQuery UI所使用的图像和CSS.

2.2.3Controllers目录

在ASP.NET MVC中,控制器是用Controllers目录中的类来表示的。默认情况下,该目录含有两个控制器—HomeController(处理访问主页的请求)和AccountController(处理身份认证)。

2.2.4 Models目录

Models目录典型地用于容纳表示应用程序核心概念的各种类,或者将数据约束成某种格式的类,这些类专用于特定的视图,故称为视图模型(View Model)。

2.2.5 Scripts目录

Scripts目录是存放由应用程序所使用的各种JavaScript文件的地方。默认项目模板在这个目录中包含了相当多的文件,包括流行的开源jQuery库和用于执行客户端验证的脚本。

2.2.6 Views目录

Views目录含有用于渲染用户界面的模板。其中每一个模板都被表示成一个Razor视图(.cshtml或.vbhtml文件),并被放在以负责渲染该视图的控制器为名称的子目录中。

2.2.7 Global.asax

Global.asax文件位于项目结构的根目录中,并包含了应用程序第一次启动时需要运行的初始化代码,如注册路由的代码。

2.2.8 Web.config

Web.config文件也位于项目结构的根目录中,并含有ASP.NET MVC正确运行所必须的配置细节。

第3章 试图基础

3.1视图简介

3.1.1选择待渲染视图 视图是通过在控制器动作中调用View方法来渲染的。 调用View方法会返回ViewResult对象,它知道如何渲染一个特定的视图。当不带参数调用该方法时,框架认定待渲染视图的名称应当与动作名相同,默认的视图引擎会在Views/<控制器名>和Views/Shared目录中查找。 3.1.2重写视图名

3.2给视图传递数据

3.2.1ViewDataDictionary

3.2.2ViewBag

3.2.3带有视图模型的强类型视图 继承于System.Web.Mvc.WebViewPage的视图称为弱类型视图 继承于System.Web.Mvc.WebViewPage<T>的视图称为强类型视图

通过使用@model关键字指定模型类型,视图便是继承于WebViewPage<T>,而不是WebViewPage,得到一个强类型视图

3.3使用强类型模板

3.3.1 EditorFor 和 DisplayFor模板

3.3.2内建模板

3.3.3选择模板

3.3.4定制模板

第4章 充满动作的控制器

4.1考察控制器和动作

4.1.1IController与控制器基类

4.1.2如何形成动作方法

4.2哪些应该放在动作方法中

控制器应充当一种协调程序——它不应该真正包含任何业务逻辑,而是充当一种转换层的形式,将用户输入(来自视图)转换成能够由域(放置业务逻辑的地方)所使用的对象,反之亦然。 输入验证

4.3单元测试介绍

第5章 视图模型

5.1什么是视图模型

模型是有意义事物的一种表现。它未必是物理事物,但却是真实的东西:一种业务概念,或是一个API。 视图模型通常是相当简单的具有扁平结构的对象,直接映射成要在UI上显示的内容。

5.2表现用户输入

5.3用于显示和输入的复杂模型

第6章 验证

6.1服务端验证

6.1.1 Data Annotations验证 在System.ComponentModel.DataAnnotations程序集定义的一组注解属性和类,该程序集让你能够用元数据赖修饰类。

6.1.2扩展ModelMetadataProvider

6.2客户端验证

使用RemoteAttribute IClientValidatable(客户端可验证接口)

第7章 ASP.NET MVC中的Ajax

7.1使用JQuery的Ajax

7.2 ASP.NET MVC的Ajax辅助器

第8章 安全性

8.1认证与授权

认证(Authentication) 认证确保用户已提供了适当的访问系统所需的凭据。 授权(Authorization) 授权发生在认证之后,且包括对给定用户是否有权对系统做某事(如查看一个页面或编辑一条记录)的决策。

8.1.1以AuthorizeAttribute限制访问 Windows认证——适合于企业内部网络应用程序(Intranet Application) 基于角色的认证

8.1.2 AuthorizeAttribute的工作机制 IAuthorizationFilter

OnAuthorization

8.2跨网站脚本攻击(XSS)

8.2.1动作中的XSS Javascript作为评论的一部分进行递交

8.2.2避免XSS漏洞 1.事事皆编码

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

2.自动输入验证

validateInput注解属性

8.3跨网站请求伪造(XSEF)

8.3.1 XSRF的动作 使用Javascript来递交请求

8.3.2防止XSRF ValidateAntiForgeryTokenAttribute @Html.AntiForgeryToken()

8.3.3 JSON劫持 防止这种攻击,只接受HTTP的POST请求来请求JSON数据,而不是GET。 1.为GET访问重写默认行为

舍弃JsonResult

2.修改JSON响应

把易受攻击的JSON数据封装在一个变量中

第9章 以路由控制URL

9.1介绍URL路由

MVC引入的URL路由的底层结构能将URL映射到控制器动作 Global.asax(RegisterRoutes) 入站路由(Inbound Routing) 将URL匹配到控制器或动作及任何附加参数 出站路由(Outbound Routing) 通过控制器/动作及任意附加参数构造与URL方案匹配的URL

9.2设计URL方案

9.2.1建立简单、整洁的URL

http://example.com/events_by_month.aspx?year=2011&month=4 http://example.com/events/2011/04

9.2.2 建立可破解的URL

显示全部事件 http://example.com/events

显示某年事件 http://example.com/events/2011

显示某月事件 http://example.com/events/2011/04

REST(Representational State Transfer) REST所依赖的原理是,应用程序中的每一个值得注意的“事物”都应该是一个可寻址的资源。资源可以通过一个单一通用的URI以及一组可用于该资源的简单操作进行访问。

9.3 在MVC中实现路由

9.3.1添加自定义路由

9.3.2添加自定义的动态路由

9.3.3全匹配路由

9.4使用路由系统生成URL

@Html.ActionLick

@Url.Action

9.5 Web Form的路由

9.5.1添加Web Form页面的路由 在Global.asax,MapPageRoute方法将/ProductsByCategory 映射到ProductsByCategory.aspx

9.5.2通过Web Form页面生成URL GetRouteUrl

9.6调试路由

9.6.1使用Route Debugger

9.6.2 使用路由约束

9.7测试路由行为

MvcContrib https://archive.codeplex.com/?p=mvccontrib

第10章 模型绑定器与值提供器

10.1创建自定义模型绑定器

IModelBinderProvider 大多数时候动作参数是对象的主键,或唯一标识符,因此在所有动作中都防止一段重复的数据库访问代码,而自定义的模型绑定器,能够在动作执行之前加载存储对象。访问数据库并构造对象这一工作是交给模型绑定器去完成的。

10.2使用自定义值提供器

IValueProvider

第11章 利用AutoMapper进行映射

声明式编程(Declarative Programming)

命令式编程(Imperative Programming)

11.1 AutoMapper介绍

AutoMapper只看名称,并且在匹配的情况下形成赋值(与属性类型无关, int Number 可以被映射到string Number) 创建AutoMapper映射 执行AutoMapper映射 AutoMapper使用命名约定 class Source {Child child{get;set;}}
class Child {int Number {get;set;}}
可以被映射到
class Demonstrationl{ string ChildNumber {get;set;}}

11.2AutoMapper基础

11.2.1 AutoMapper初始化

11.2.2 AutoMapper简档(Profiles)

11.2.3健全性检查

11.2.4减少重复的格式化代码

第12章 轻量级控制器

12.1控制器为何要轻量级

1.易于维护

2.易于测试

3.聚焦的职责 常常被误以为是放置逻辑的地方

12.2简化控制器的技术

12.2.1管理常用视图数据 ActionFilterAttribute ControllerActionInvoker DefaultControllerFactory IActionFilter

12.2.2派生动作结果 ActionFilterAttribute ViewResult

12.3使用应用程序总线

命令处理器(Command Processor)

第13章 利用区域进行组织

13.1创建一个基本的区域

右击"现有项目",并选择"Add"-->"Area" MVC区域能够将内容分隔到逻辑和物理文件夹中,其中每一个都拥有自己共享而对其他区域隐藏的内容。

13.2用T4MVC管理链接和URL

T4MVC模板会修改现有控制器,使其成为分部类,并生成一组辅助器文件,让我们能够方便地引用应用程序中任何位置的控制器、动作和视图。

第14章 第三方组件

14.1学习NuGet

14.2使用ASP.NET的Web 辅助器

install-package microsoft-web-helpers

14.2.1使用Twitter辅助器

14.2.2使用LinkShare服务器

14.3 MvcContrib Grid组件

第15章 以NHibernate 进行数据访问

第16章 扩展控制器

16.1动作、授权与结果过滤器

ActionFilter

16.2动作选择器

ActionMethodSelectorAttribute

第17章 高级视图技术

17.1消除视图中的复制

Templates(模板)

Layouts(布局)

Partials(分部)

Child actions(子动作)

17.2构建查询字符串参数列表

构造RouteValueDictionary

匿名类型

17.3 Spark视图引擎

第18章 依赖注入与可扩展性

18.1依赖注入简介

18.1.1什么是DI(Dependency Injection) 对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。 依赖注入说白一点,就是容器将某个类依赖的其他类注入到这个类中。 原理

1.高层次模块不应该依赖低层次模块,他们应该依赖于一种抽象。
2.这种抽象不应该依赖细节,细节应该依赖于抽象

18.2在ASP.NET MVC中使用DI

任何对基础结构的某种外部依赖性都可以用一种很好的候选办法来实现,这种办法就是将依赖性提取出来,形成一个由控制器使用的接口。 控制器变得更加瘦小,因而易于理解 控制器变得可测试——可以编写单元测试并消除依赖性/隔离测试类。

18.2.1自定义控制器工厂

18.2.2使用依赖性解析器

第19章 便携式区域

MvcContrib

PortableArea

第20章 完整的系统测试

WatiN

第21章 托管ASP.NET MVC 应用程序

21.1 XCOPY部署

21.2 IIS 7

21.3 Azure托管

第22章 部署技术

第23章 升级ASP.NET MVC 4

第24章ASP.NET Web API

24.1Web API 是什么

24.1.1为什么要用Web API Web服务能够简单,而WCF复杂。 未来需要支持更多的HTTP客户端。 一些基本的Web技术已经足够GET/POST/PUT/DELETE

24.1.2 Web API 与WCF的区别 WCF使用SOAP Web API使用JSON

posted @ 2019-08-06 19:26  FH1004322  阅读(124)  评论(0)    收藏  举报