参考书籍:《ASP.NET MVC 4 高级编程》、《ASP.NET MVC 5 高级编程》、《C#高级编程(第8版)》、《使用ASP.NET MVC开发企业及应用》、度娘谷歌等。html
前言:jquery
前一篇只简单的介绍了ASP.NET和ASP.NET MVC,有朋友说要点干货。好吧。那就来点干货。程序员
正好我也是真心想系统性的整整MVC4和5,之前也没有深刻弄过,因此此次我也是豁出去了,相关的书都入手了,只求最精。web
人家双11都是买吃的喝的用的装逼的。我们这些程序员却。。。真是服服的了。数据库
别被滚动条吓到。看书先看目录。毕竟整了两天多的。再说了,了解一下各版本区别,对后面学习老是有好处的。编程
此次我把MVC 1-5各版本的更新特色都收集整理了一下,也算是为了把每一个版本的和我以前掌握的MVC4作个对比,方便后面的进一步的学习吧。 bootstrap
本篇目录:设计模式
1. ASP.NET MVC如何适应ASP.NET浏览器
2. MVC模式简介缓存
4.1 ASP.NET MVC 1 概述
4.2 ASP.NET MVC 2 概述
4.3 ASP.NET MVC 3 概述
4.3.1 Razor视图引擎
4.3.2 验证的改善
4.3.3 支持.NET 4数据注解
4.3.4 经过改进模型验证简化验证
4.3.5 非侵入式Javascript
4.3.6 jQuery验证
4.3.7 Json绑定
4.3.8 依赖项解析
4.3.9 全局操做过滤器
4.4 ASP.NET MVC 4 概述
4.4.1 ASP.NET Web API
4.4.2 加强的默认项目模板
4.4.3 使用jQuery Mobile的移动项目模板
4.4.4 显示模式
4.4.5 捆绑和微小框架
4.4.6 包含开源库
4.4.7 其余功能
4.4.8 开源发布
4.5 ASP.NET MVC 5 概述
4.5.1 One ASP.NET
4.5.2 新的Web项目体验
4.5.3 ASP.NET Identity
4.5.4 Bootstrap 模板
4.5.5 特性路由
4.5.6 ASP.NET基架
4.5.7 身份验证过滤器
4.5.8 过滤器重写
5. 结尾
ASP.NET MVC 是一种构建Web应用程序的框架,它将通常的MVC(Model-View-Controller)模式应用于ASP.NET框架。
下面首先介绍ASP.NET MVC和ASP.NET之间的关系。
在2002年ASP.NET 1.0首次发布时,人们很容易将ASP.NET和Web Forms当作同一事物。尽管当时ASP.NET已经支持两层抽象了,具体以下:
应用ASP.NET开发的主流方法囊括了整个Web Forms堆栈 —— 利用拖放服务器控件,有用的状态(semi-magical statefulness)来处理后台的复琐事务(但这样具备常常混淆页面生命周期,生成不太理想的HTML页面等缺点)。
然而,老是会有发生下面所属状况的可能性,即经过使用处理器、组件模块和其余手写代码来直接响应HTTP请求,按照想要的方式构建Web框架,设计出精彩的HTML页面。
虽然,能够这么作,可是实现起来很是困难,这并非由于普遍的计算机科学世界中缺少设计模式,而是由于缺少一种内置的模式支持这样的实现。
在2007年ASP.NET MVC宣布开发之时,MVC模式已成为构建Web框架最流行的方式之一。
MVC成为计算机科学领域重要的构建模式已有多年历史。
1979年,它最初被命名为事物-模型-视图-控制器(Thing-Model-View-Controller),后来简化成了模型-视图-控制器(Model-View-Controller)。
在分离应用程序内部的关注点方面(例如,从显示逻辑中分离出数据访问逻辑)MVC是一种强大而简洁的方式,尤为适合应用在Web应用程序总。
虽然关注点的显式分离在必定程度上增长了应用程序设计的复杂性,可是整体来讲,MVC带来的利大于弊。
自从引入以来,MVC已经在数十种框架中获得应用,在Java和C++语言中,在Mac和Windows操做系统中以及在不少架构内部都用到了MVC。
MVC将应用程序的用户界面(User Interface,UI)氛围了三个主要部分:
MVC做为用户界面模式
注意这里的MVC指的是一种用户界面模式。
MVC模式是处理用户交互的一种解决方案,它并非应用程序关注的其余问题,例如数据访问、服务交互等。
时刻牢记:MVC是一种有用的模式,可是可能只是在开发应用程序时用到的许多模式之一。
MVC模式常常应用于Web程序设计中。在ASP.NET MVC中,MVC三个主要部分的定义大体以下:
注意:
MVC是一种高级架构模式,它的使用取决于具体的应用环境。ASP.NET MVC的上下文是问题域(一个无状态的Web环境)和宿主系统(ASP.NET)。
ASP.NET MVC以来的许多核心策略,与其余MVC平台所使用的策略相同,再加上它提供的编译和托管代码的好处,以及利用.NET语言的新特性,好比Lambda表达式、动态和匿名类型,使其成为强大的开发框架。
不过,本质上,ASP.NET采用了大部分基于MVC的Web框架所使用的一些基本原则:
- 约定优于配置(Convention over Configuration)
- 不重复(又名DRY原则)
- 尽可能保持可插拔性(Pluggability)
- 尽可能为开发人员提供帮助,但必要时容许开发人员自由发挥
自2009年3月,ASP.NET MVC 1 发布起,在短短几年的时间里,ASP.NET MVC已经发布了5个主要版本,期间还有一些临时版本。为更好地理解ASP.NET MVC,首先知道ASP.NET MVC的发展历程是很重要的。
下面我把我收集的ASP.NET MVC从1到5的各个版本整理一下都贴出来了:
2007年2月,Microsoft公司的Scott Guthrie(ScottGu)飞往美国东海岸参加会议。在旅途中,他草拟编写了ASP.NET MVC的内核程序。这是一个只有几百行代码的简单应用程序,但它却给大部分追随Microsoft公司的Web开发人员带来了美好前景。
听说,2007年10月,在华盛顿州雷德蒙市举行的Austin ALT.NET会议上,ScottGu告诉一些开发者说“我在飞机上写了这个好东西”,并询问他们是否看到需求以及对该应用程序的见解。在此举一炮打响。
事实上,许多人都参与了该应用程序原型的设计,并把代码命名为Scalene。
Eilon Lipton于2007年9月把第一份原型电邮给他的团队,并和ScottGu在原型、代码、想法上屡次思考,反复斟酌。
即便在官方发布以前,ASP.NET MVC也并不符合Microsoft产品的标准,这一点是很清楚的。ASP.NET MVC的开发周期是高度交互的,在官方版本发布以前已有9个预览版本,他们都进行了单元测试,并在开源许可下发布了代码。
全部这些都突出了一个哲理:在整个研发过程当中药高度重视团队的写做交互。最终结果是在ASP.NET MVC 1 的官方版本发布时(包含代码和单元测试),已经被那些将一直使用它的开发者屡次使用和审查。
ASP.NET MVC 1 于2009年3月13日正式发布。
与ASP.NET MVC1发布时隔一年,ASP.NET MVC2于2010年3月发布。ASP.NET MVC2的部分主要特色以下:
根据应用ASP.NET MVC1开发各类应用程序开发人员的反馈意见,ASP.NET MVC2中加强了许多API功能以加强其“亲和”性,好比:
ASP.NET MVC2发布的一个重要先例是不多有重大改动,这是ASP.NET MVC结构化设计的一个证实,这样就能够实如今核心不变的状况下进行大量的扩展。
在Web Matrix发布的推进下,ASP.NET MVC 3 于ASP.NET MVC 2 发布以后的第10个月退出。ASP.NET MVC 3 的主要特征以下:
因为这些ASP.NET MVC 3 的特性都是最近添加的,而且很是重要,所以这里将对其作详细介绍。
注意:
拥有MVC经验的开发人员很是关心新版本中作出的更新,这里的功能总结就是为这些朋友准备的。
若是之前没有使用过ASP.NET MVC,也没必要担忧,这些特性目前还可有可无,后面咱们会慢慢阐述他们,这里您能够简要了解大概,看完后面的文章以后,再回头研究这些更新的功能点等。
自10余年前ASP.NET 1.0发布以来,Razor是在渲染HTML方面的第一个重大更新。在ASP.NET MVC1和ASP.NET MVC2中默认使用的视图引擎广泛称为Web Forms视图引擎(Web Forms View Engine),由于他和Web Forms使用了一样的Aspx/Ascx/Master文件和语法。
可是它的设计目标是支持在图形编辑器中的编辑控件。
下面是在Web Forms页面中这种语法的一个示例:
Razor被专门设计成视图引擎的语法,它有一个主要的做用:集中生成HTML代码模板。下面展现如何应用Razor生成一样的标记:
Razor语法易于输入、易于阅读。Razor不像WebForms视图引擎安阳具备相似于XML的繁杂语法规则。
前面已经讨论了使用Razor语法的不一样感觉,为了用较为量化的用于表达,下面讨论Razor语法的设计目标:
”我一直在苦苦寻找Razor的语法规则,知道有人告诉我不要再想了,直接输入“@”符号就能够开始编写代码了,我才意识到原来Razor本无规则。“
验证是构建Web应用程序的一个重要组成部分,可是他历来不是一项有趣的工做。在确保验证正确的状况下,通常老是但愿用户尽量少的时间编写验证码。
ASP.NET MVC 2 的特性驱动验证系统经过使用声明式代码替代原来重复的命令式代码,减小了这一过程当中的不少麻烦。然而,这只支持少数的高级验证方案。所以在大多数状况下仍不得不编写大量的代码。
ASP.NET MVC 3将验证系统扩展到支持可能碰见的大部分状况。
关于验证,我们后面会单独拿出来讲。
由于ASP.NET MVC 2 编译不兼容.NET 3.5框架,因此他不支持任何.NET 4 框架数据注解加强的功能。
因为.NET 4 框架的支持,ASP.NET MVC 3 采用了一些新的且很是有用的验证功能。如:
ASP.NET MVC 3 对.NET 4 框架中IValidatableObject接口的支持值得赞美。这样就能够经过在模型类中实现这个接口以及相应的Validate方法,以任何想象到的方式扩展模型验证,如:
非侵入式Javascript是通常术语,他表达了一个哲理:相似于术语”表述性的状态转移(Representational State Transfer,REST)“。
直观描述就是非侵入式Javascript不在页面元素中混杂Javascript代码。
例如,非侵入式Javascript连接页面元素是经过元素的ID或类,这些类一般基于其余特性的呈现(如HTML5的data-特性),而不是经过事件特性(如onclick/onsubmit/...)。
当把HTML之当作一个文档时,非侵入式Javascript具备很大的意义。文档应该有语义意义,全部这些像标签和元素特性等,都应该有一个精确的含义。为了促进交互而让Javascript遍及整个页面是不利于文档内容的。
ASP.NET MVC 3 采用两种方式支持非侵入式Javascript,分别是:
ASP.NET MVC 2 支持jQuery,,而使用Microsoft Ajax进行验证。
ASP.NET MVC 3 经过将验证支持转换到流行的jQuery验证插件上运行,完成了为Ajax支持使用jQuery的过渡。
非侵入式Javascript和使用标准插件系统的jQuery验证的结合,让验证及其灵活。同时还能够得益于强大的jQuery社区里更丰富的插件。
目前ASP.NET MVC 3 项目中,客户端验证默认是打开的,而且能够经过时会用web.config设置或在global.asax中编码,让它在整个站点中启用。
ASP.NET MVC 3 经过新的JsonValueProviderFactory支持Json(Javascript Object Notation)绑定,这样可让方法接收和绑定Json格式的数据。
这一点在高级的Ajax应用中很是有用,例如客户端元素须要和接收到的数据绑定。
ASP.NET MVC 3引入了一个全新的概念,称为依赖解析器(dependency resolver),从而大大简化了在应用程序中依赖注入的使用。
这使分离应用程序组件更加容易,从而使组件更容易配置和测试。
下面列举的方案已经添加了对依赖解析器的支持:
有关详细的,后面咱们会慢慢讲到,一时半会还不须要关心这玩意儿。
ASP.NET MVC 2 的操做过滤器能够提供一段执行代码的钩子(hook),使该段代码能够在一个方法执行以前或以后运行。
这个功能能够经过自定义特性实现,自定义的特性能够应用于控制器的一些操做或者整个控制器。ASP.NET MVC 2 就带有一些过滤器,例如Authorize特性。
ASP.NET MVC 3 运用适用于程序中全部方法的全局操做过滤器扩展了这个功能,这对于处理应用程序基础结构的问题,像错误处理和日志记录尤为有用。
ASP.NET MVC 4 创建在一个至关成熟的基础上,可以把重点放在一些高级应用上,主要功能包括:
设计ASP.NET MVC的目的是用来建立网站,所以,整个平台的设计目标很明确,响应浏览器的请求,并返回HTML。
然而,ASP.NET MVC是控制到字节的响应变得很是容易,并且MVC模式在建立服务层时很是有用。ASP.NET开发人员发现,使用MVC能够建立Web服务,这些服务能够返回XML、Json或其余格式的数据,而且比使用其余服务框架(如WCF或编写原始HTTP处理程序)更容易。
尽管如此,它仍存在一些不足之处,好比咱们须要使用网站框架来传递服务。但整体而言,MVC要优于其余框架。
ASP.NET MVC 4 引入了一个好的解决方案:ASP.NET Web API(简称Web API)。它是一个提供了ASP.NET MVC开发风格的框架,但它专门用来编写HTTP服务。该框架包括在HTTP服务域修改一些ASP.NET MVC概念,并提供一些新的面向服务的功能。
下面是一些相似MVC的Web API功能,他们只适用于HTTP服务域:
除此以外,Web API专门为HTTP服务的开发,还添加了一些新的概念和功能:
虽然ASP.NET Web API包含在ASP.NET MVC4中,但它能够单独使用。事实上,它与ASP.NET不存在任何依赖关系,而且能够自托管 —— 也就是说,独立于ASP.NET和IIS。
这意味着Web API能够运行在任何.NET应用程序中,能够是一个Windows服务,甚至是一个简单的控制台应用程序。
有关Web API详细介绍,咱后面再单独拿出来讲。
指导ASP.NET MVC 3,ASP.NET MVC 1项目默认模板的可视化设计基本保持不变,当建立一个新的ASP.NET MVC 3 项目,并运行它时,界面是蓝色背景和一个白色的内容区域,如图1所示:
图1 - ASP.NET MVC 3 应用程序启动效果
在ASP.NET MVC 4中,默认模板的HTML和CSS都进行了从新设计,一个新的ASP.NET MVC 4 应用程序如图2所示:
图2 - ASP.NET MVC 4 应用程序启动效果(登陆页面)
除了拥有现代的设计以外,新建模板经过自适应布局也支持移动浏览器。
自适应布局是一项设计流动网页布局的技术,他会经过CSS媒体查询来响应不一样的屏幕尺寸。
当低于850px宽度的终端设备(如手机或平板电脑)访问站点时,CSS会由于小表单的因素,自动从新配置优化,如图3,Google Chrome的移动仿真器查看的效果:
图3 - 移动设备浏览 页面会自适应响应
尽管网站值得有用自定义的设计,可是使用现代的标记和CSS设置ASP.NET MVC 4项目中的底层HTML和CSS是很是棒的,由于他们可以很好的响应不断增加的移动浏览器的使用率。
若是要建立只有移动浏览器访问的网站,能够利用新的Mobile Project模板。
该模板能够预先配置站点一边使用流行的jQuery Mobile库,该库不但可以很好的适用于移动设备,并且还提供了美观样式,如上例图3所示。
jQuery Mobile还有话了触摸功能,支持Ajax导航和移动设备的功能。
显示模式根据浏览器发出的请求,使用约定的方法来选择不一样的视图。
当浏览器的用户代理只是一个已知的移动设备时,默认的视图引擎首先查找名称以Mobile.cshtml结尾的视图。
例如,若是网站项目中有一个通用视图和一个移动视图,他们的名称分别是Index.cshtml和Index.Mobile.cshtml,那么当在移动浏览器网站访问到该页面时,MVC4将自动使用移动视图。
此外,还能够根据自定义标准,注册自定义设备模式 —— 所要作的就是编写一行代码。
例如,如今要注册一个WinPhone设备模式,用以WinPhone.cshtml结束的视图响应Windows Phone设备,咱们只须要在Global.asax文件的Application_Start方法中写入以下代码:
1 DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("WinPhone") 2 { 3 ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf("Windows Phone OS", StringComparison.OrdinalIgnoreCase) >= 0) 4 });
ASP.NET 4支持的捆绑和微小框架与ASP.NET 4.5中包含的框架相同。该框架经过合并脚本引用能够吧若干个请求合并为一个请求,从而减小发送到站点的请求数量。
与此同时,它采用各类技术来压缩请求大小,好比缩短变量名、删除空格和注释等。他也很好地适用于CSS,能够吧若干CSS请求打包成一个请求,并压缩CSS请求的大小,使其用最少的字节,产生等价的规则,也采用高级技术(如语义分析)来折叠CSS选择器。
捆绑系统时高度配置的,咱们能够包含特定脚本的自定义捆绑,并用单一的URL来引用这些捆绑。当使用Internet模板建立新的MVC4应用程序时,咱们经过引用/App_Start/BundleConfig.cs中列出的默认捆绑,能够看到一些例子。
使用捆绑和微小系统的一个不错的意外收获是,咱们能够从视图代码中删除文件引用。这样咱们就能够在不升级视图或布局的状况下,添加或升级脚本库和那些拥有不一样文件名成的CSS文件,由于引用的脚本或CSS绑定而不是单独文件。
例如,MVC Internet应用程序模板就包含一个不依赖版本号的jQuery绑定:
1 bundles.Add(new ScriptBundle("~/bundles/jquery").Include("~/Scripts/jquery-{version}.js"));
而后在站点中(~/Views/Shared/_Layout.cshtml),经过绑定URL来引用它,代码以下:
1 @Scripts.Render("~/bundles/jquery")
因为这些引用不用绑定到jQuery版本号,所以绑定和微小系统将自动得到更新的jQuery库(经过NuGet或手动),而不须要修改任何代码。
长久以来,MVC项目模板包含顶级的开源库,例如jQuery和Modernizr。自MVC3起,这些库经过NuGet包含,这使库的更新和以来管理变得极其简单。
除此以外,MVC4项目模板还引入了一些新库:
除了上面列出的功能以外,MVC4还包括许多其余功能。完整的功能列表在发布说明里,若是有兴趣可查阅http://www.asp.net/whitepapers/mvc4-release-notes。
下面列出了最感兴趣的且不与前面任何主题重复的三项功能:
MVC4测试版包含了一些有趣的实验性功能,可是这些功能未包含在MVC4的发布版中,这些功能后面计划做为带外版发布:
- 单页面应用程序
单页面应用程序是一个新的项目模板,它使用Javascript和Web API来构建集中于客户端交互的单页面应用程序。这种Web应用程序具备很是好的互动性和有效性,像Microsoft Outlook Web Access和Gmail等,但弊端是,这种应用程序构建起来很是困难。单页面应用程序包括:
- 一组Javascript库,用来与本地缓存数据进行交互
- 其余Web API组件,用于支持操做单元和DAL
- 支持基架的MVC项目模板,用来捆绑组件
单页面应用程序的预览版本引发了开发人员浓厚的兴趣,开发人员也及时地给予了反馈。遗憾的是,开发团队不能再MVC4发布以前完成开发,而不得已从MVC4 RC中删除。
- Recipes
Recipes能够很容易地经过NuGet包更新Visual Studio工具。开发团队最初想用来扩展MVC工具,好比“添加Area”、“添加控制器”和“添加视图”对话框等。
Phil展现了视图移动器(View Mobilizer)的样例,Recipes能够经过一个简单的复选框来建立现有视图的移动版本。
然而,开发团队意识到Recipes有许多潜在的功能,而不只是扩展MVC工具。各式各样的NuGet包能够受益于Visual Studio工具,由于它提供了简化的配置、自动化和设计器等。
所以,在MVC4测试版以后的版本中删除了Recipes,可是它会包含在NuGet发布版本中。
从最第一版本开始,ASP.NET MVC一直都遵循开源许可条例,但它只是开发的源代码而不是一个彻底开源的项目。咱们能够阅读源代码、能够修改源代码、甚至能够发布修改后的源码,可是咱们不能他本身的嗲吗贡献到官方的MVC代码库。
2012年5月修改了ASP.NET Web Stack开原公告。这一公告标志着,ASP.NET MVC、ASP.NET Web Pages(包括Razor试图引擎)和ASP.NET Web API由开源许可代码正式过渡到了彻底的开源项目。
对这些项目的全部代码修改和问题跟踪都能顾反馈到公共代码中,而且在开发团队赞成修改生效的状况下,这些项目接收社会的代码贡献(即pull请求)。
因为该项目已经成为开源项目,所以即便是在很短期内,官方源码也能接收一些bug修复和功能加强,而且接收的这些更新将和MVC4一块儿发布。
ASP.NET团队会审查和测试外部提交的代码,而且当项目发布时,与前面的ASP.NET MVC版本同样,由Microsoft支持。
即便咱们不打算贡献任何源码,公共代码库也在可视化方面作了重大改变。在过去,须要等待临时版本以了解开发团队的最新工做进展,咱们能够查看新签入的源码(网址:http://aspnetwebstack.codeplex.com/SourceControl),甚至在夜间运行新发布的代码以测试添加的新功能。
2013年10月,ASP.NET MVC 5与Visual Studio 2013一块儿发布。这个版本的关注点是“One ASP.NET”计划(稍后介绍),以及对整个ASP.NET框架所作的核心加强。
下面列出了一些主要特性:
有不少的选项是好事。Web应用程序千差万别,而Web工具和平台也不是有了一种就能够应对全部状况。
可是另外一面,一些选项会让咱们束缚手脚。正如“鱼和熊掌不可兼得”,若是选择同样东西意味着放弃另外一样东西,那么咱们不但愿被迫必须选择他。
这一点特别适用于开始建立项目时的选项:咱们刚刚开始建立项目,怎么知道一年之后这个项目须要什么!
在以前的MVC版本中,每次建立项目的时候都面临着选择:建立一个MVC应用程序、Web Forms应用程序或其余项目类型。以后,实际上咱们就被限制住了。
在某种程度上,能够吧Web Forms添加到一个MVC应用程序中,可是把MVC添加到Web Forms应用程序中是很困难的。
MVC应用程序在csproj文件中隐藏了一种特殊的项目类型GUID,当尝试吧MVC添加到Web Forms应用程序时,这只是必须作的几个神秘修改之一。
在MVC5中,状况发生了变化,由于如今只有一种ASP.NET项目类型,如图4所示:
图4 - ASP.NET MVC 5 项目模板
在Visual Studio 2013中建立新的Web应用程序时,没有复杂的选项,只有Web应用程序。不仅是在一开始建立ASP.NET项目时才支持这么作:在不断开发的过程当中,能够添加对其余框架的支持,由于工具和特性都是做为NuGet包提供的,
例如,若是开发过程当中改变了想法,就可使用ASP.NET基架向任何现有的ASP.NET应用程序添加MVC。
做为新的One ASP.NET体验的一部分,Visual Studio 2013中建立新的MVC应用程序的对话框已被合并和简化(如上述图4),下篇我们在一步步建立一个项目瞅瞅里面啥样的。
MVC5完全重写了成员和身份验证系统,使其成为新的ASP.NET Identity系统的一部分。这个新系统拜托了原来的ASP.NET成员系统的陈旧局限,并让MVC4的Simple Membership系统变得更加成熟,可配置性更好。
下面列出了ASP.NET Identity的一些主要新特性:
关于ASP.NET Identtiy系统,咱们会在后面的文章中详细讨论。
MVC1项目的默认模板的视觉设计一直到MVC3都没有改变。
在MVC4中,从新设计了默认模板的HTML和CSS,使其默认的视觉设计也能拿得出手了。并且,在不一样的屏幕分辨率下,默认模板的HTML和CSS也工做的很好。(这个在上面的MVC4概述介绍过了)
可是MVC默认模板的HTML和CSS都是自定义的,这不够理想。视觉设计的更新与MVC的产品发布周期捆绑在一块儿,因此很难与Web开发社区分享设计模板。
在MVC5中,项目模板改成运行在流行的Bootstrap框架上。Bootstrap最初由Twitter的一名开发人员和一名设计师建立,他们后来离开了Twitter,专一于Bootstrap的开发。
MVC5的默认设计实际上看起来就像能够直接部署到生产环境同样,如图5所示:
图5 - ASP.NET MVC 5 默认应用程序运行效果
更好的是,由于Bootstrap框架在Web开发人员群体中得到了很高的接受度,因此在https://wrapbootstrap.com/和http://bootswatch.com/上能够得到大量的、多种多样的Bootstrap主题(有免费的,也有付费的)。
例如,如图6所示,我是用了Bootswatch免费提供的Slate主题,上面图5的默认效果就变成了:
图6 - 使用Bootswatch免费的Slate主题 实现主题自定义切换
后面咱们将介绍如何针对移动Web浏览器优化MVC应用程序,详细介绍Bootstrap。
特性路由是一种新的指定路由的方法,可将注解添加到控制器类或操做方法上。流行的AttributeRouting开源项目让咱们的这种方法成为可能。
后面咱们将单独介绍特性路由。
基架是基于模型类生成样板代码的过程。MVC从版本1开始就有了基架,可是仅限于MVC项目使用。
新的ASP.NET基架系统能够在任何ASP.NET应用程序中工做。
另外,它还支持构建强大的自定义基架,使其具备自定义对话框和完善的基架API。
后面咱们会单独一篇文章简单的讨论一下ASP.NET的基架系统,最后还会介绍扩展基架系统的两种方式。
MVC好久以来一直支持认证过滤器的功能,容许基于角色身份或其余自定义逻辑来限制对控制器或操做的访问。
可是,在后面的文章中咱们将会看到,身份验证(肯定用户是谁)和受权(通过身份验证的用户可以作什么)之间存在一个重要的区别。
新增的身份验证过滤器先于受权过滤器执行,从而容许访问ASP.NET Identity提供的用户声明,以及运行自定义的身份验证逻辑。
后面咱们会详细讨论身份验证过滤器。
过滤器是一项高级的MVC特性,容许开发人员参与操做和结果执行管道。
过滤器重写意味着能够实现让某个控制器或操做不执行的全局过滤器。
这个咱们先不会详细介绍,在最后的文章中咱们再详细地介绍过滤器以及过滤器重写。
看了这么多,若是你从事过ASP.NET或ASP.NET MVC的开发,相信你应该对ASP.NET和ASP.NET MVC 1-5都已经有了大概的了解了。
由于我之前弄过MVC3和MVC4,因此看完上面的MVC 1-5之间演变、版本特色以及更新,如今已经对ASP.NET MVC 5 已经有了大概的了解了。
但愿后面的学习会轻松吧。