ASP.NET MVC 3.0/4.0新特性
1.3 ASP.NET MVC 3.0/4.0新特性
除了依赖于.NET Framework 4.0之外,MVC 3.0/4.0还做了很多改进并引入了许多新的特性。包括:
Razor视图引擎;
NuGet包管理工具;
改善的可扩展性;
全局活动筛选器(Global Action Filter);
动态语言支持;
局部页面输出缓存;
改进的ajax;
改善的验证机制;
移动项目开发模板;
Web API;
在本节接下来,我们将简单介绍每一个新特性,后面再逐一深入讲解。我们将在第23和24章介绍移动项目开发模板、Web API和其他只有MVC 4.0才有的特性。
1.3.1 Razor视图引擎
Razor视图引擎是ASP.NET Web Pages技术几个核心组件之一。Razor提供了将代码和标记语言混写更简洁的方式。在ASP.NET MVC 1.0和2.0中只有一个视图引擎——WebForm视图引擎,但现在除了Web Form视图引擎,你还可以选择razor视图引擎开发应用程序。
例如,下面的代码演示了使用传统的Web Form引擎,在页面显示产品列表。
<%@ PageLanguage="C#" Inherits="System.Web.MVC.ViewPage<Product[]>"%>
<ul>
<% foreach(varproduct in Model) { %>
<li><%:product.Name %></li>
<% } %>
</ul>
这是非常杂乱的。顶端的page指令和用于在代码和标记语言之间切换的<% %>符号,向页面标记中添加了很多多余的字符。相反,Razor提供了一种非常简洁的方式实现相同的功能:
@model Product[]
<ul>
@foreach(var productin Model) {
<li>@product.Name</li>
}
</ul>
可以看到,Razor不需要任何的代码起始和结束标记,就能在代码和标记之间切换,这使得页面可以只关注于页面呈现的标记,我们将会在第1部分大量使用Razor视图引擎,第17章将会深入讲解Razor视图引擎。
1.3.2 NuGet包管理器
NuGet包管理器与ASP.NET MVC一起发布。NuGet简化了对依赖组件的管理,它可以直接将需要的组件、库文件和一些其他的工具包安装到你的项目中,不用像以前那样,当需要第三方组件时,要手动在网上下载。一旦安装成功,在Visual Studio中,这些组件可以很容易更新到最新版本。
你可以通过NuGet提供的命令行方式或者GUI界面,在大量的在线提供的包中下载你需要的组件和库。我们将在第14章详细介绍NuGet。
1.3.3 改善的可扩展性
ASP.NET MVC公开的额外的可扩展性入口点,使得你可以将自己的组件挂钩到框架中,从而取代框架默认提供的功能。MVC中的依赖解析(Dependency Resolver)可以用来实例化对象,并将它们提供给框架。这个方法可以被集成到不同的依赖反转容器中,减少了必须手动初始化对象的次数。
我们将在第18章学习如何使用依赖解析器和依赖反转容器提供程序的可扩展性。
1.3.4 全局活动过滤器
MVC中的全局活动过滤器特性构建在MVC 1.0和2.0的过滤器机制之上,目的是为了在应用程序中向所有的控制器活动提供通用行为(Cross-cutting behavior)。虽然这看起来是一个不起眼的特性,但它可以巨幅减少应用程序中筛选器声明的次数。我们将在第16章深入学习全局筛选器。
1.3.5 动态语言支持
由于运行在.NET4.0之上,ASP.NET MVC利用了一些DLR中的特性,其中包括通过动态模型(Dynamic Model)向视图传递数据。我们将在第3章继续学习该特性。
1.3.6 部分页面输出缓存
自ASP.NET MVC诞生之初,就支持在一段时间内缓存整个页面。现在它也开始支持只缓存页面易做图定的部分。我们将在第17章学习这种新的缓存机制。
1.3.7 改善的ajax
MVC通过集成jQuery以及其他的Javascript库,将继续支持丰富的ajax功能。同时支持将json数据反序列化后作为活动方法的参数的功能。我们将在第7章学习这些ajax改进功能。
1.3.8 改善的验证机制
MVC支持使用数据注解(data annotation)特性验证模型对象。这些特性在.NET 4.0和ASP.NET MVC中显著增强。另外,对客户端验证的支持也被大大改善了。我们将在第6章学习这些验证特性。
现在你已经大体了解了ASP.NET MVC的一些显著特性,接下来我们将通过一个案例项目深入研究这些特性。这个例子将会贯穿本书的整个第1部分。
补充:Web开发 , ASP.Net ,