本文转自:http://www.cnblogs.com/liangxiaofeng/p/5840754.html
2009年發行ASP.NET MVC 1.0版
2010年發行ASP.NET MVC 2.0版,VS2010
2011年發行ASP.NET MVC 3.0版+EF4,需要.Net4.0支持,VS2011
2012年發行ASP.NET MVC 4.0版+EF5,需要.Net4.0支持,VS2012
2013年發行ASP.NET MVC 5.0版+EF6,需要.Net4.5支持,VS2013
2015年發行ASP.NET MVC 6.0版+EF7,需要.Net5.0支持,VS2015
ASP.NET 5.0 将改名为 ASP.NET Core 1.0
ASP.NET MVC 6 将改名为 ASP.NET MVC Core 1.0
Entity Framework 7.0 将改名为 Entity Framework Core 1.0
MVC3
支持多视图引擎 在 ASP.NET MVC3 中,增加视图的对话框中允许你选择你希望的视图引擎,在新建项目对话框中,你可以指定项目默认的视图引擎,可以选择 WebForm,Razor,或者开源的视图引擎,例如:Spark, NHaml, 或者 NDjango.
控制器的改进 全局的 Action 过滤器 有的时候你希望能够在在一个 Action 方法执行之前或者执行之后执行一些处理逻辑,在 ASP.NET MVC2 中,提供了 Action 过滤器,允许对特定控制器的 Action 方法进行处理,实际上,有时候你希望对所有的 Action 都进行类似的处理,MVC3 允许你将过滤器加入到 GlobalFilters 集合中来创建全局的过滤器.
新的 ViewBag 属性 MVC2 中的控制器支持 ViewData 属性,允许通过后绑定的字典将数据传送给视图模板,在 MVC3 中,你可以通过 ViewBag 来更加简单的完成。例如,对于 ViewData["Message"] = "text",你可以通过 ViewBag.Message = "text" 来完成。你不需要通过类来定义任何强类型的属性,因为这是动态属性,在内部,ViewBag 属性以名-值对的形式保存在 ViewData 字典中。注意,在许多预发布版本中,这个属性被称为 ViewModel。
新的 ActionResult 类型 下面的 ActionResult 类型在 MVC3 中是新增的或者被扩展的。
JavaScript 和 Ajax 改进 默认情况下,在 MVC3 中,Ajax 和验证使用不引人注目的 unobtrusive 的 JavaScript 方式。unobtrusive 不会在 HTML 中插入行内的 JavaScript ,这使得 HTML 更加精简和更少干扰,也使得更加容易被替换和定制 JavaScript 库,在 MVC3 中,验证助手默认使用 jQuery.Validate 插件完成,如果你希望使用 MVC2 的行为,你可以在 web.config 中通过配置来关闭 unobtrusive .
默认启用了客户端验证 在早先版本的 MVC 中,你需要在视图中显式调用 Html.EnableClientValidation 方法来启用客户端验证。在 MVC3 中,已经不再需要了,因为默认就会启用客户端验证。可以在 web.config 中关闭。
为了使得客户端验证工作,你仍然需要在网站中加入对 jQuery 和 jQuery.Validation 库的引用,你可以在自己的网站中提供,或者使用 Microsoft 或者 Google 的 CDN 服务器。
远程验证 ASP.NET 3 通过一个新的标签 RemoteAttribute 对 jQuery Validation 插件的远程验证提供支持。这允许客户端的验证库自动调用一个你定义在服务器上的自定义的方法来完成只能在服务器上完成的验证逻辑。
在下面的例子中,Remote 标签指定了通过一个定义在 UsersController 中名为 UserNameAvailable 的方法来验证用户名字段。
- Razor 的语法简单且清晰,只需要最小化的输入
- Razor 容易学习,语法类似于 C# 和 VB
- Visual Studio 对于 Razor 提供了智能提示和语法着色
- Razor 视图不需要允许程序或者启动 Web 服务器就可以进行测试
- @model 用来指定传到视图的 Model 类型
- @* * 注释语法
- 对于整个站点可以一次性设定默认项目,例如布局。
- Html.Raw 方法提供了没有进行 HTML 编码的输出
- 支持在多个视图之间共享代码 ( _viewstart.cshtml 或者 _viewstart.vbhtml )
- Chart. 生成图表
- WebGrid, 生成数据表格,支持完整的分页和排序
- Crypto,使用 Hash 算法来创建 Hash 和加盐的口令
- WebImage, 生成图片
- WebMail, 发送电子邮件
- HttpNotFoundResult. 向客户端返回 404 HTTP 状态.
- RedirectResult. 基于一个布尔型的参数,返回一个临时的重定向 (HTTP 302 status code) 或者持久的重定向 (HTTP 301 status code), 结合这个改进,, Controller 提供了三个方法来支持持久的重定向: RedirectPermanent, RedirectToRoutePermanent, 和 RedirectToActionPermanent. 这些方法返回一个 Permanent 属性为真的 RedirectResult 对象实例。
- HttpStatusCodeResult. 返回用户指定的 HTTP 状态码。
JSON 绑定支持 ASP.NET MVC3 包含内置的 JSON 绑定支持,允许 Action 方法接收 JSON 编码的数据并且模型化为 Action 的参数。这个能力经常被用于客户端的模板和数据绑定中。客户端模板允许你通过客户端的模板来格式化和显示一个或者多个数据,MVC3 允许你简单的连接客户端模板和服务器端的 Action 方法,通过 JSON 来发送和接收数据,更多的信息参考:Scott Guthrie‘s MVC 3 Preview blog post.
ValidationAttribute 类 在 .NET Framework4 中被改进 的ValidationAttribute 类支持新的 IsValid 重载,提供关于当前验证上下文的更多信息,例如什么对象被验证了。这允许你基于 Model 的其他属性来验证当前值,例如,新的 CompareAttribute 就允许你比较 Model 的两个属性的值,在下面的例子中,ComparePassword 属性必须匹配 Password 字段来同通过验证。
Model 验证的改进 DataAnnotations 元数据标签 ASP.NET MVC3 支持 DataAnnotations 元数据标签,例如:DisplayAttribute。
- public class User
- {
- [Required]
- public string Password { get; set; }
- [Required, Compare("Password")]
- public string ComparePassword { get; set; }
- }
MVC4
MVC4 在vs2012以上版本中创建的时候,默认是 .net framework4.5 ,但是我们是可以修改为 .net 4.0的 (也就是说在2003的服务器上,还是可以上 mvc4的,安装过程请参考 windows2003 IIS6 部署MVC3和MVC4程序 Asp.net MVC4.0(从net4.5降级到4.0) 部署到window server 2003上的解决方案
但是Net Framework4.5是不支持安装在window server 2003上)
asp.net 4.5 MVC升级到 MVC4, 多了 webapi
vs2013里面 asp.net 4.5.1 MVC升级到了MVC5 ,webapi升级到了 webapi2.0
MVC5
多了对 webapi 2.0的支持 (可以看看这个 http://www.cnblogs.com/artech/p/web-api-sample.html)
ASP.NET MVC 5带来全新的开发者体验,One ASP.NET的整合新范本系统,经由单一入口即可完成所有Web范本的选择,各种Web范本之间也可以灵活组合出新范本,例如,Web Forms + Web API等。MVC 5提供更有弹性的会员认证系统,透过Code First的方式开发人员不在受限於固定的Schema,可自由定义所需的资料Schema。採用Bootstrap设计的全新Web范本介面,Bootstrap提供高度弹性,让开发人员也能快速拥有架构页面介面及开发出支援响应式网页 (Responsive Web)的能力。
随著Visual Studio 2013的发行,开发工具又向前迈出大一步,它正在统一一致的体验,现在,你能够实现相同功能集,无论你如何开始建置ASP.NET应用程式。例如,开发人员可以在Web Forms专案中透过支架(Scaffold)加入Web API,开发人员可以自由混合选择你所想要的技术。One ASP.NET是為了让开发人员在所爱的ASP.NET裡更容易做想做的事,One ASP.NET应该给开发人员信心,无论他们选择什麼,他们仍然是在一个可信任基础框架-ASP.NET-下进行开发。 MVC专案范本无缝地整合成一个全新的One ASP.NET体验。透过One ASP.NET的专案建立精灵,开发人员可以客製化MVC专案和组态认证。MVC专案现在是标準Web应用程式的一部分且不再使用它们自己的专案GUID。
vs2013里面 有 EF6
EF6 在 code first的模式下,codefrist不支持的数据库更多,比如access,sqlite,sql compact 3.5,mysql,oracle
MVC6
在新版 ASP.NET5 和 MVC6 中,有很多变化,有些是彻底的变化,比如在最底层支持依赖注入技术,为了方便了解,我们这里列出了最重要的 10 大变化,以便进行学习,具体如下:
ASP.NET 5 现在已经是跨平台了,可以在 Mac 和 Linux 上运行。
不再有 Web Forms 框架了。
只支持 C# ,不在支持 VB.NET 了。(貌似最近又听说最终版 VB.NET 又要支持了)
新的 Tag 语法, @Html.LabelFor 或 Html.TextBoxFor 替换成新语法 <label asp-for="Name"> 或 <input asp-for="Name" /> ,以便进行模型绑定。
新增视图组件( View Component ),可以将局部内容定义为一个单独的组件进行调用,和 Web Forms 里的 WebControl 非常像。
拥抱前端技术,内置了 Nodejs 、 NPM 、 Grunt 、 Bower 技术。
模型整合,将 MVC 和 WebAPI 整合成一个框架。
支持 AngularJS ,帮内置了 AngularJS 的 module 、 controller 、 directive 、以及 factory 模板。
支持依赖注入技术,拥有原生的 DI 框架,并且也支持第三方容器。
支持 xUnit.net ,并抛弃了 Visual Studio Unit Testing 框架。
ASP.NET 5 中的 MVC 、 Web API 、 Web Pages 三个框架会合并成一个框架,统称为 MVC6 。该合并工作将删除三个框架中重复的功能,比如 MVC 和 Web API 中的两种 Controller 只保留一种。但是传统 MVC 的功能都会保留,比如模型绑定。不过,据说 Web Pages 在 RTM 的时候不会发布,而是会在 RTM 之后的第一次更新中进行发布。
MVC6 会引入一些新功能,最引人注目的功能就是 Tag Helpers 和 View Components 。 Tag Helpers 是 Html Helpers 的一种替换,而 View Components 则引入里类似 Web Forms 中的 WebControl 的概念。
EF7
EF7不是在EF6上更新,而是完全重写了。它完全支持.NET Core runtime,也就是说以后你可以在Mac或者是Linux机器上使用EF了。
EF7比较大的变化:
a.只支持Code-First或者Code,不再支持图形界面的生成。
b.支持关系型数据库。
c.跨平台。