0.4 ASP.NET 4为我们带来了什么

微软的每一次新版本发布对于我们开发人员来说都是激动人心的,它所提供的强大功能和人性化的操作界面总会让你心潮澎湃、激动不已。当然,Microsoft Visual Studio 2010与ASP.NET 4也不会让我们失望,现在就来看一下它为我们提供了哪些新的开发特性。

0.4.1 Microsoft Visual Studio 2010集成开发环境

在ASP.NET的Web项目开发方面,Microsoft Visual Studio 2010集成开发环境主要做了以下几方面的改进:

1)起始项目模板。不论是使用新建网站模板创建Web项目,还是使用新建Web应用程序模板创建Web项目,Visual Studio 2010都会提供两种模板供我们选择,如图0-4所示。

figure_0024_0006

图 0-4 使用新建Web应用程序模板创建Web项目

其中,使用Empty ASP.NET Web Application模板创建的是一个空的Web项目,而使用ASP.NET Web Application模板创建的Web项目是一个带有许多开发模板文件的项目,详细区别将在第1章讲解。

2)多定向支持。如图0-4所示,Visual Studio 2010的多定向支持使你可以在Visual Studio 2010集成开发环境中同时开发或运行.NET 2.0、.NET 3.0、.NET 3.5和.NET 4版本的程序。因此,你也可以将任何.NET 2.0、.NET 3.0、.NET 3.5版本的项目升级到.NET 4。

3)多显示器支持。Visual Studio 2010允许将编辑器、设计器和工具窗口移到顶层窗口之外,放在你想要的任何地方、系统的任何显示器上。这可以显著地改善屏幕的可使用面积,优化总的开发工作流程。

想利用多个显示器的特性是非常容易的。只要单击任何一个文档标签((tb)或者工具窗口,将其拖到顶层IDE窗口中的一个新位置,或者拖到IDE之外,到你想要的任何显示器上的任意一个位置,如图0-5所示。

figure_0025_0007

图 0-5 移动Visual Studio 2010开发窗口

之后,如果想要重新定位((dck)文档、窗口,可以将它们拖回到主窗口(或者右击,选择重新定位功能选项)。

Visual Studio会记住文档保存时最后的屏幕位置,这意味着,当你关闭并再次打开项目时,文档会自动恢复到上次保存时的布局。

4)ASP. NET、HTML、JavaScript代码片段支持。如图0-6所示,Visual Studio 2010提供了对HTML、ASP.NET、JavaScript代码片段的支持。代码片段允许你创建一段代码和标识,然后只需最少量的字符输入就可很快地在你的应用中将其施用,从而使你在源码视图内更有效率。

figure_0025_0008

图 0-6 ASP.NET、HTML、JavaScript代码片段支持

同时,Visual Studio 2010包含了超过200个内置的代码片段,这些片段安装后即使用。更棒的是,你不会局限于仅使用内置的代码片段,还可以轻松地创建自己的代码片段(连带可置换的参数),可将它们导入Visual Studio 2010,以及轻松地与其他开发人员分享,这便于你快速地自动化自己的常做任务。

5)代码的智能提示。或许,“代码的智能提示”这个特性对你来说并不陌生,它在Visual Studio 2010以前的版本中就已经有了,但那时候的“代码的智能提示”指示的是匹配你输入字符的所有项,但这样的提示往往使得查找比较困难。但在Visual Studio 2010中,微软改变了这种匹配方式,使用了过滤功能,过滤了一些不相关的提示。这种新的智能提示过滤方法便于你在编写代码时可以很快速地找到并使用类和成员,你可以在VB和C#语言编程时使用该特性,从而提高你编写代码的速度,如图0-7所示。

figure_0026_0009

图 0-7 代码的智能提示

0.4.2 ASP.NET核心服务

相对于ASP.NET 3.5 SP1来说,ASP.NET 4算是一个功能性增强版本,它引入了多项可改进ASP.NET核心服务的功能。

1.可扩展输出缓存

其实,自ASP.NET 1.0发布之后,开发人员就可以通过输出缓存将生成的页、控件和HTTP响应的输出存储在内存中。对于后续的Web请求,ASP.NET可以从内存中检索生成的输出而不是从头开始重新生成输出,从而更快地提供内容服务。但此方法有一个限制,即生成的内容必须始终存储在内存中。在流量较大的服务器上,输出缓存的内存需求可能会与Web应用程序其他部分的内存需求产生冲突。

ASP. NET 4为输出缓存增加了扩展性,它允许你能够配置一个或多个自定义输出缓存提供程序。输出缓存提供程序可使用任何存储机制保存HTML内容。这些存储选项包括本地或远程磁盘、云存储和分布式缓存引擎。

借助ASP.NET 4中的输出缓存提供程序扩展性,可以为网站设计更主动且更智能的输出缓存策略。例如,可以创建这样一个输出缓存提供程序,该程序在内存中缓存站点流量“排名前10”的页面,而在磁盘上缓存流量较低的页面,也可以根据所呈现页面的各种变化因素组合进行缓存,但应使用分布式缓存以减少前端Web服务器的内存消耗。

可以将自定义输出缓存提供程序作为派生自新的OutputCacheProvider类型的类创建。随后,可以通过使用OutputCache元素的新的providers节在Web.config文件中配置提供程序,如下面的示例所示:


<caching>

<outputCache defaultProvider="AspNetInternalProvider">

<providers>

<add name="MyOutputCacheProvider"

type="_19_1.MyOutputCacheProvider,19-1"/>

</providers>

</outputCache>

</caching>


默认情况下,ASP.NET 4中所有的HTTP响应、生成的网页以及控件都使用内存输出缓存,其中defaultProvider属性被默认设置为AspNetInternalProvider。当然,可以更改Web应用程序中所使用的默认输出缓存提供程序,这是通过为defaultProvider指定一个不同的提供程序名称实现的,如下面的代码所示。


<caching>

<outputCache defaultProvider="MyOutputCacheProvider">

<providers>

<add name="MyOutputCacheProvider"

type="_19_1.MyOutputCacheProvider,19-1"/>

</providers>

</outputCache>

</caching>


此外,还可以针对每个控件和每个请求选择不同的输出缓存提供程序。为不同的Web用户控件选择不同的输出缓存提供程序的最简单的方法就是在用户控件的指令中以声明方式使用新的ProviderName属性,如下面的代码所示。


<%@Control Language="C#"AutoEventWireup="true"

CodeBehind="MyOutputCacheProviderUserControl.ascx.cs"

Inherits="_19_1.MyOutputCacheProviderUserControl"%>

<%@OutputCache Duration="30"VaryByParam="none"

ProviderName="MyOutputCacheProvider"%>

<asp:Label ID="Label1"runat="server"/>


关于可扩展输出缓存,将在第19章中详细阐述。

2.预加载Web应用程序

预加载功能提供了一种可控方法,用于启动应用程序池,初始化ASP.NET应用程序,然后接受HTTP请求。通过这种方法,可以在处理第一项HTTP请求之前初始化开销很大的应用程序。例如,可以使用应用程序预加载管理器初始化某个应用程序,然后向负载平衡器发出信号,告知应用程序已初始化并做好接受HTTP流量的准备。值得注意的是,该技术只能够在Windows Server 2008 R2上的IIS 7.5中运行。

若要使用应用程序预加载管理器,需要由IIS管理员通过使用applicationHost.config文件中的以下配置将IIS 7.5中的应用程序池设置为自动启动:


<applicationPools>

<add name="MyApplicationPool"startMode="AlwaysRunning"/>

</applicationPools>


由于一个应用程序池可包含多个应用程序,因此需要通过使用applicationHost.config文件中的以下配置分别指定要自动启动的各个应用程序:


<sites>

<site name="MySite"id="1">

<application path="/"

serviceAutoStartEnabled="true"

serviceAutoStartProvider="PrewarmMyCache">

<!——Additional content——>

</application>

</site>

</sites>

<!——Additional content——>

<serviceAutoStartProviders>

<add name="PrewarmMyCache"

type="MyNamespace.CustomInitialization, MyLibrary"/>

</serviceAutoStartProviders>


如果IIS 7.5服务器冷启动或某个应用程序池已回收,IIS 7.5将使用applicationHost.config文件中的信息确定哪些Web应用程序必须自动启动。对于每个标记为预加载的应用程序,IIS 7.5将向ASP.NET 4发送一个请求以启动该应用程序使其处于一种状态,在该状态下该应用程序暂时无法接受HTTP请求。当应用程序处于这种状态时,ASP.NET将对serviceAutoStartProvider特性定义的类型进行实例化并调入其公共入口点。

通过实现IProcessHostPreloadClient接口,可以创建具有所需入口点的托管预加载类型。

3.永久重定向页面

对于页面的重定向,ASP.NET 4增加了一个RedirectPermanent方法,它可以方便地发出HTTP 301(“永久移动”)响应,如下面的示例所示:


RedirectPermanent("/Main.aspx");


识别永久重定向的搜索引擎及其他用户代理将存储与内容关联的新URL,从而消除浏览器用于临时重定向的不必要的往返。

4.会话状态压缩

默认情况下,ASP.NET提供两个用于存储整个Web场中会话状态的选项:第一个选项是一个调用进程外会话状态服务器的会话状态提供程序;第二个选项是一个在Microsoft SQL Server数据库中存储数据的会话状态提供程序。由于这两个选项均在Web应用程序的工作进程之外存储状态信息,因此在将会话状态发送至远程存储器之前,必须对其进行序列化。如果会话状态中保存了大量数据,序列化数据可能会变得很大。

ASP. NET 4针对这两种类型的进程外会话状态提供程序引入了一个新的压缩选项。使用此选项后,在Web服务器上有多余CPU周期的应用程序可以大大缩减序列化会话状态数据的大小。

可以使用配置文件中sessionState元素的新的compressionEnabled特性设置此选项,当compressionEnabled配置选项设置为true时,ASP.NET使用.NET Framework GZipStream类对序列化会话状态进行压缩和解压缩。下面的示例演示了如何设置该特性:


<sessionState

mode="SqlServer"

sqlConnectionString="data source=dbserver;

Initial Catalog=aspnetstate"

allowCustomSqlDatabase="true"

compressionEnabled="true"/>


5.简洁的Web.config文件

在ASP.NET 4中,配置信息被移到了machine.config文件中,从而使Web.config比以前的版本更简洁和清晰,如下面的代码所示。


<?xml version="1.0"?>

<!——

For more information on how to configure your ASP.NET application, please visit

http://go.microsoft.com/fwlink/?LinkId=169433

——>

<configuration>

<system.web>

<compilation debug="true"targetFramework="4.0"/>

</system.web>

</configuration>


0.4.3 ASP.NET Web窗体

在Web窗体方面,ASP.NET 4做了以下几方面的改进。

1.Page.MetaKeywords和Page.MetaDescription属性

MetaKeywords和MetaDescription是Page类新增加的两个属性,使用它们可以设置页面对应的meta标记—keywords和description。

2.为页面的各个控件启用视图状态

Control类增加了一个新属性ViewStateMode,可以使用该属性来启用单个控件的视图状态。

3.支持最近引入的浏览器和设备

在ASP.NET中,包含一项名为“浏览器功能”的功能,可用于确定用户使用的浏览器的功能。其中,浏览器功能由存储在HttpRequest.Browser属性中的HttpBrowserCapabilities对象表示,有关特定浏览器功能的信息由浏览器定义文件定义。

在ASP.NET 4中,这些浏览器定义文件已更新为包含有关最近引入的浏览器和设备(如Chrome、BlackBerry和iPhone等)的信息。附带的浏览器定义文件包括:blackberry.browser、chrome.browser、Default.browser、firefox.browser、gateway.browser、generic.browser、ie.browser、iemobile.browser、iphone.browser、opera.browser和safari.browser。

除此之外,ASP.NET 4还提供了一项名为“浏览器功能提供程序”的新功能。它可用于构建一个提供程序,该提供程序还可用于编写自定义代码以确定浏览器功能。

4.ASP.NET路由

ASP. NET 4增加了对使用Web窗体进行路由的内置支持。路由是ASP.NET 3.5 SP1引入的一项功能,通过此功能可将应用程序配置为使用对用户和搜索引擎有意义的URL,这样无须指定物理文件名。使用这项功能,可以使站点更友好,并增加站点内容被搜索引擎发现的概率。

例如,显示应用程序中产品类别的某个页面的URL如下面的示例所示:


http://website/products.aspx?id=10


通过路由功能,可以使用下面的URL呈现相同的信息:


http://website/products/software


很显然,第二个URL不仅能使用户了解将获得的内容,并且还可以显著提高在搜索引擎搜索结果中的排名。

5.设置客户端ID

在ASP.NET 4中,所有的控件都增加了一个ClientIDMode属性。可以使用此属性来影响ASP.NET用于生成控件的ClientID值的算法,从而更加方便地控制控件客户端ID。该属性是一个枚举类型,它有四个枚举值,其原型如下面所示:


using System;

namespace System.Web.UI

{

public enum ClientIDMode

{

Inherit=0,

AutoID=1,

Predictable=2,

Static=3,

}

}


6.在GridView和ListView控件中保持行选择

在ASP.NET的早期版本中,行选择是基于页面的行索引进行的。例如,如果选择第一页上的第三行,当移至第二页时,则会自动选定第二页上的第三行。在大多数情况下,更理想的情况是不选择第二页上的任何行。

而在ASP.NET 4中,它新增加了一个EnablePersistedSelection属性来支持持久化选择。启用此功能后,将基于行数据键选择项。这意味着,如果你选择第一页上的第三行,当移至第二页时,并不会选定第二页上的任何行。当再次返回第一页时,仍将选定第三行。其中,设置示例如下面所示:


<asp:GridView id="GridView1"runat="server"

PersistedSelection="true">

</asp:GridView>


7.使用CSS简化FormView控件内容的样式设置

在ASP.NET的早期版本中,FormView控件使用项模板呈现内容。这使得在标记中进行样式设置十分困难,因为控件会呈现意外的表行和表单元格标记。而在ASP.NET 4中,提供了属性RenderOuterTable,当此属性设置为false时,则不会呈现表标记,这样也就更容易对控件内容应用CSS样式。设置示例如下面的代码所示:


<asp:FormView ID="FormView1"runat="server"RenderTable="false">


8.简化ListView控件的布局

ASP. NET 3.5中引入的ListView控件不仅具备GridView控件的所有功能,同时还可以全面地控制输出。但是,该控件的早期版本要求在使用中指定布局模板LayoutTemplate,如下面的示例代码所示:


<asp:ListView ID="ListView1"runat="server">

<LayoutTemplate>

<asp:PlaceHolder ID="ItemPlaceHolder"runat="server">

</asp:PlaceHolder>

</LayoutTemplate>

<ItemTemplate>

<%Eval("Name")%>

</ItemTemplate>

</asp:ListView>


而在ASP.NET 4中,简化了此控件的使用,可以不需要布局模板。即上面示例中的标记可以替换为下面的标记:


<asp:ListView ID99="ListView1"runat="server">

<ItemTemplate>

<%Eval("Name")%>

</ItemTemplate>

</asp:ListView>


9.使用QueryExtender控件筛选数据

我们知道,创建数据驱动的网页时,一项十分常见的任务就是数据筛选操作。筛选操作通过仅显示满足指定条件的记录,从数据源排除数据。通过筛选,可以在不影响数据集中的数据的情况下以多种方式查看这些数据。

以前,筛选操作通常要求创建Where子句以应用于查询数据源的命令。但是,LinqDataSource控件的Where属性并不公开LINQ中提供的全部功能。为了更便于筛选数据操作,ASP.NET 4中新增加了一个新的QueryExtender控件,该控件可通过声明性语法从数据源中筛选出数据。使用QueryExtender控件有以下优点:

❑与编写Where子句相比,可提供功能更丰富的筛选表达式。

❑提供一种LinqDataSource和EntityDataSource控件均可使用的查询语言。例如,如果将QueryExtender与这些数据源控件配合使用,则可以在网页中提供搜索功能,而不必编写特定于模型的Where子句或eSQL语句。

❑可以与LinqDataSource或EntityDataSource控件配合使用,或与第三方数据源配合使用。

❑支持多种可单独和共同使用的筛选选项。

10.对Web标准和辅助功能的增强支持

ASP. NET控件的早期版本有时会呈现不符合HTML、XHTML或辅助功能标准的标记。而在ASP.NET 4中,消除了其中大部分异常情况。主要体现在以下几个方面:

(1)用于可禁用控件的CSS

在ASP.NET 3.5中,当将某个控件的Enabled属性设置为false时,系统会将一个disabled特性添加到呈现的HTML元素中。例如,下面的标记将创建一个已禁用的Label控件:


<asp:Label id="Label1"runat="server"

Text="已禁用的Label控件"Enabled="false"/>


在ASP.NET 3.5中,原有控件设置将生成以下HTML:


<span id="Label1"disabled="disabled">已禁用的Label控件</span>


而在HTML 4.01中,针对span元素将disabled特性视为无效。对于仅供显示的元素(如span),浏览器通常支持呈现禁用的外观,但根据辅助功能标准,依赖于这种非标准行为的网页并不可靠。因此,对于这些仅供显示的元素,应使用CSS指明已禁用的可视外观。在默认情况下,ASP.NET 4将针对上面显示的控件设置生成以下HTML:


<span id="Label1"class="aspNetDisabled">已禁用的Label控件

</span>


当然,可以通过设置DisabledCssClass属性来更改控件禁用时默认呈现的class特性的值。也就是说,如果要使用不同于“aspNetDisabled”默认值的类名,通常可以在Global.asax文件的Application_Start方法中放入代码来执行此操作,如下面的示例所示:


protected void Application_Start(object sender, EventArgs e)

{

WebControl.DisabledCssClass="customDisabledClassName";

}


现在的Label控件将生成以下HTML:


<span id="Label1"class="customDisabledClassName">

已禁用的Label控件</span>


(2)用于验证控件的CSS

在ASP.NET 3.5中,验证控件将默认颜色red呈现为内联样式。例如,下面的标记创建一个RequiredFieldValidator控件:


<asp:RequiredFieldValidator ID="RequiredFieldValidator1"

runat="server"ErrorMessage="Required Field"

ControlToValidate="RadioButtonList1"/>


ASP. NET 3.5为验证程序控件呈现以下HTML:


<span id="RequiredFieldValidator1"

style="color:Red;visibility:hidden;">

RequiredFieldValidator

</span>


默认情况下,ASP.NET 4不会呈现将颜色设置为红色的内联样式。内联样式仅用于隐藏或显示验证程序,如下面的示例所示:


<span id="RequiredFieldValidator1"

style"visibility:hidden;">

RequiredFieldValidator

</span>


因此,ASP.NET 4不会自动以红色显示错误消息。

(3)用于隐藏字段Div元素的CSS

ASP. NET使用隐藏字段存储状态信息,如视图状态和控件状态,这些隐藏字段包含在div元素中。在ASP.NET 3.5中,此div元素没有class特性或id特性。因此,影响所有div元素的CSS规则可能会在无意中导致此div变为可见状态。

为避免上面这种问题,ASP.NET 4使用一个CSS类呈现隐藏字段的div元素,该类可用于将隐藏字段div与其他元素区分开来。呈现的HTML如下所示:


<div class="aspNetHidden">


(4)用于Table、Image和ImageButton控件的CSS

默认情况下,在ASP.NET 3.5中,某些控件会将所呈现HTML的border特性设置为0。下面的示例显示了由ASP.NET 3.5中的Table控件生成的HTML:


<table id="Table2"border="0">


Image控件和ImageButton控件也会这样,但由于此设置完全没有必要,而且会提供应通过使用CSS提供的可视格式设置信息,因此,在ASP.NET 4中未生成该特性。

(5)用于UpdatePanel和UpdateProgress控件的CSS

在ASP.NET 3.5中,UpdatePanel和UpdateProgress控件不支持expando特性。因此,无法针对它们呈现的HTML元素设置CSS类。而在ASP.NET 4中,这些控件已更改为接受expando特性,如下面的示例所示:


<asp:UpdatePanel runat="server"class="myStyle">

</asp:UpdatePanel>


下面是此标记呈现的HTML:


<div id="ctl00_MainContent_UpdatePanel1"class="expandoclass">

</div>


(6)消除不需要的外部表

在ASP.NET 3.5中,FormView、Login、PasswordRecovery与ChangePassword控件呈现的HTML包装在一个table元素中,该元素的用途是将内联样式应用于整个控件。

如果使用模板自定义这些控件的外观,则可以在你在模板中提供的标记中指定CSS样式。在这种情况下,不需要额外的外部表。在ASP.NET 4中,通过将新的RenderOuterTable属性设置为false,可以避免呈现表。

(7)向导控件的布局模板

在ASP.NET 3.5中,Wizard和CreateUserWizard控件可生成用于可视格式设置的HTML table元素。在ASP.NET 4中,可以使用LayoutTemplate元素指定布局。如果这样做,将不生成HTML table元素。在模板中,可创建占位符控件来指示应在该控件中动态插入项的位置。

(8)用于CheckBoxList和RadioButtonList控件的新增HTML格式设置选项

ASP. NET 3.5使用HTML表元素为CheckBoxList和RadioButtonList控件的输出设置格式。为提供不使用表进行可视格式设置的替代方法,ASP.NET 4为RepeatLayout枚举增加了两个选项:

❑UnorderedList

此选项指定使用ul和li元素,而不是表对HTML输出进行格式设置。

❑OrderedList

此选项指定使用ol和li元素,而不是表对HTML输出进行格式设置。

(9)Table控件的页眉和页脚元素

在ASP.NET 3.5中,可通过设置TableHeaderRow类和TableFooterRow类的TableSection属性将Table控件配置为呈现thead和tfoot元素。而在ASP.NET 4中,这些属性均默认设置为适当的值。

(10)Menu控件的CSS和ARIA支持

在ASP.NET 3.5中,Menu控件使用HTML table元素进行可视化格式设置,在某些配置中无法通过键盘访问该控件。在ASP.NET 4中,通过以下方法解决了这些问题,并提高了可访问性:

❑生成的HTML具有无序列表((u和li元素)的结构;

❑使用CSS进行可视化格式设置;

❑菜单按照ARIA标准实现键盘访问,可以使用箭头键在菜单项中进行导航;

❑ARIA角色和属性特性将添加到生成的HTML中。

Menu控件的样式呈现在页面顶部的style块中,而不是与呈现的HTML元素内联呈现。如果要使用单独的CSS文件以便于修改菜单样式,可以将Menu控件的新的IncludeStyleBlock属性设置为false,这样便不会生成样式块。

(11)用于HtmlForm控件的有效XHTML

在ASP.NET 3.5中,HtmlForm控件(由<form runat=“server”>标记隐式创建)呈现的HTML form元素同时具有name和id特性。但因为name特性在XHTML 1.1中已弃用,因此该控件在ASP.NET 4中不会呈现name特性。

(12)保留控件呈现中的向后兼容性

现有ASP.NET网站中的代码可能会假定控件是以ASP.NET 3.5中的方式呈现HTML。为避免在将该站点升级为ASP.NET 4时出现向后兼容性问题,可以在升级站点后让ASP.NET继续以ASP.NET 3.5中的方式生成HTML。为此,可以在ASP.NET 4网站的Web.config文件中将pages元素的controlRenderingCompatibilityVersion特性设置为“3.5”,如下面的示例所示:


<system.web>

<pages controlRenderingCompatibilityVersion="3.5"/>

</system.web>


如果省略上述设置,默认值将与网站的目标ASP.NET版本相同。

0.4.4 动态数据

动态数据是在.NET Framework 3.5 SP1版本中引入的,它为创建数据驱动应用程序提供了许多增强功能:

❑快速生成数据驱动网站的RAD体验。

❑基于数据模型中定义的约束的自动验证。

❑可以使用属于动态数据项目中的字段模板轻松更改为GridView和DetailsView控件中的字段生成的标记。

而在ASP.NET 4中,动态数据的功能得到了进一步增强,主要表现在以下几个方面:

1)在现有Web应用中对单个数据绑定控件启用动态数据。其中,对数据绑定控件启用动态数据时,你可以获得以下三个好处:

❑动态数据能让你在运行时为数据控件中的字段提供默认值;

❑你可以在不创建和注册数据模型的情况下与数据库交互;

❑你可以不必编写任何代码而自动验证用户输入的数据。

2)用于URL和电子邮件地址的新字段模板。在ASP.NET 4中,引入了两个新的内置字段模板EmailAddress.ascx和Url.ascx,这两个模板用于使用DataTypeAttribute特性标记为EmailAddress或Url的字段。

对于EmailAddress对象,该字段显示为使用mailto:协议创建的超链接,当用户单击该链接时,将打开用户的电子邮件客户端并创建一条主干消息;而对于Url对象,该字段显示为普通超链接。

下面的示例显示了如何标记字段:


[DataType(DataType.EmailAddress)]

public object HomeEmail{get;set;}

[DataType(DataType.Url)]

public object Website{get;set;}


3)使用DynamicHyperLink控件创建链接。使用新的DynamicHyperLink控件,可轻松生成指向动态数据站点中的页面的链接。

4)数据模型中的继承支持。

5)多对多关系支持(仅限于Entity Framework)。Entity Framework为表之间的多对多关系提供了多种支持,这些支持是通过将关系公开为Entity对象的集合实现的。增加了新的字段模板((MnyToMany.ascx和ManyToMany_Edit.ascx),以便为显示和编辑多对多关系中涉及的数据提供支持。

6)增加了DisplayAttribute,可以对字段显示方式进行更多控制。其中,DisplayAttribute类可以指定用于显示字段的更多选项,如字段显示的顺序和字段是否将用作筛选器。另外,该特性还提供对以下内容的独立控制:GridView控件中用于标签的名称、DetailsView控件中使用的名称、字段的帮助文本,以及用于字段的水印(前提是字段接受文本输入)。

7)增加了EnumDataTypeAttribute,用于将字段映射到枚举。

8)增强的筛选器支持。筛选支持已重新编写为使用Web表单的新的QueryExtender功能。这样,可以直接创建筛选器,而无须具备将与筛选器一起使用的数据源控件的知识。除这些扩展功能外,筛选器还变为模板控件,允许你添加新的筛选器。最后,使用前面提到的DisplayAttribute类可以覆盖默认筛选器,这与使用UIHint覆盖列的默认字段模板的方法是相同的。

0.4.5 ASP.NET Chart控件

通过使用ASP.NET Chart服务器控件,可以创建包含用于复杂统计分析或财务分析的简单直观图表的ASP.NET应用程序。其中,Chart控件支持下列功能:

1)数据系列、图表区域、轴、图例、标签、标题等。

2)数据绑定。

3)数据操作,例如复制、拆分、合并、对齐、分组、排序、搜索和筛选。

4)统计公式和财务公式。

5)高级图表外观,例如三维、抗锯齿、照明和透视。

6)事件和自定义项。

7)交互性和ASP.NET AJAX。

8)支持AJAX内容传递网络,该功能为你提供了将ASP.NET AJAX库和jQuery脚本添加到Web应用程序的最佳方式。

0.4.6 Microsoft AJAX的功能

在Microsoft AJAX中,可以更加轻松地创建完全基于客户端的AJAX应用程序。其中,它主要包括下列功能:

1)可以通过服务器以HTML的形式呈现JSON数据。

2)提供客户端模板,使你可以仅使用基于浏览器的代码显示数据。

3)声明式客户端控件安装和行为。

4)提供客户端DataView控件,用于创建动态数据驱动的UI。

5)数据与HTML元素或客户端控件之间的实时绑定。

6)客户端命令冒泡。

7)WCF和WCF数据服务与客户端脚本的完全集成,包括客户端更改跟踪。

除了Microsoft AJAX库之外,ASP.NET 4还与jQuery脚本库提供很好的集成,供你更加方便地使用jQuery脚本库进行开发。

0.4.7 ASP.NET MVC

ASP. NET MVC通过使用模型-视图-控制器((MC)模式降低了应用程序层之间的依赖性,从而帮助Web开发人员生成易于维护的基于标准的优秀网站。MVC还提供对页标记的全面控制。另外,它在本质上支持测试驱动开发((TD),因而提高了可测试性。

其中,ASP.NET MVC 2主要在下列几方面增强了功能:强类型Html辅助方法、模板化辅助方法、区域、异步控制器、默认值特性、基于模型验证、客户端验证和Html.RenderAction方法。