https://www.wendangku.net/doc/791606321.html, 4 和Visual Web Developer 中的新增功能
.NET Framework 4
其他版本
.NET Framework 4 版针对https://www.wendangku.net/doc/791606321.html, 4 的几个方面提供了增强功能。Visual Studio 2010 和Microsoft Visual Web Developer 速成版还提供了一些增强功能和新增功能,用于改进Web 开发。本文档概述了即将推出的这一版本中包含的许多新功能。
本主题包含以下各节:
?https://www.wendangku.net/doc/791606321.html, 核心服务
?https://www.wendangku.net/doc/791606321.html, Web 窗体
?https://www.wendangku.net/doc/791606321.html, MVC
?动态数据
?https://www.wendangku.net/doc/791606321.html, Chart 控件
?Visual Web Developer 增强功能
?使用 Visual Studio 2010 进行 Web 应用程序部署
?https://www.wendangku.net/doc/791606321.html, 多定向的增强功能
https://www.wendangku.net/doc/791606321.html, 核心服务
https://www.wendangku.net/doc/791606321.html, 4 引入了多项可改进https://www.wendangku.net/doc/791606321.html, 核心服务(例如,输出缓存和会话状态存储)的功能。Web.config文件重构
随着新功能的添加,包含Web 应用程序配置信息的Web.config文件在过去几个版本的 .NET Framework 中获得了极大发展。在 .NET Framework 4 中,主要配置元素已移动到machine.config 文件中,应用程序现在可继承这些设置。这样,https://www.wendangku.net/doc/791606321.html, 4 应用程序中的Web.config文件就可以为空,或者仅指定应用程序面向的框架版本,如下面的示例所示:
复制
可扩展输出缓存
自https://www.wendangku.net/doc/791606321.html, 1.0 发布之后,开发人员可以通过输出缓存将页、控件和HTTP 响应生成的输出存储在内存中。对于后续的Web 请求,https://www.wendangku.net/doc/791606321.html, 可以从内存中检索生成的输出而不是从头开始重新生成
输出,从而更快地提供内容服务。但此方法有一个限制,即生成的内容必须始终存储在内存中。在负担较大流量的服务器上,输出缓存的内存需求可能会与Web 应用程序其他部分的内存需求产生冲突。
https://www.wendangku.net/doc/791606321.html, 4 为输出缓存增加了扩展性,使您能够配置一个或多个自定义输出缓存提供程序。输出缓存提供程序可使用任何存储机制保存HTML 内容。这些存储选项包括本地或远程磁盘、云存储和分布式缓存引擎。
借助https://www.wendangku.net/doc/791606321.html, 4 中的输出缓存提供程序扩展性,您可以为网站设计更主动且更智能的输出缓存策略。例如,可以创建这样一个输出缓存提供程序,该程序在内存中缓存站点流量“排名前10”的页面,而
在磁盘上缓存流量较低的页面。或者,也可以对所呈现页面的各种变化因素组合进行缓存,但应使用分布式缓存以减少前端Web 服务器的内存消耗。
通过从OutputCacheProvider类型派生一个类,可以创建自定义输出缓存提供程序。然后,使用outputCache元素中新增的提供程序子节可以在Web.config文件中对提供程序进行配置
有关更多信息以及演示如何配置输出缓存的示例,请参见caching 的 outputCache 元素(https://www.wendangku.net/doc/791606321.html, 设置架构)。有关支持缓存的类的更多信息,请参见OutputCache和OutputCacheProvider类的相关文档。
默认情况下,在https://www.wendangku.net/doc/791606321.html, 4 中,所有HTTP 响应、呈现的页和控件都使用内存中输出缓存。https://www.wendangku.net/doc/791606321.html, 的defaultProvider特性是AspNetInternalProvider。通过为defaultProvider特性指定其他提供程序名称,可以更改Web 应用程序的默认输出缓存提供程序。
此外,可以为各控件和各请求选择不同的输出缓存提供程序,还可以以编程方式指定要使用的提供程序。有关更多信息,请参见HttpApplication.GetOutputCacheProviderName(HttpContext)方法。要为不同的Web 用户控件选择不同的输出缓存提供程序,最简便的方法是使用页面或控件指令中新的providerName特性以声明方式进行选择,如下面的示例所示:
复制
<%@ OutputCache Duration="60" VaryByParam="None"
providerName="DiskCache" %>
自动启动Web 应用程序
某些Web 应用程序在为第一项请求提供服务之前,必须加载大量数据或执行开销很大的初始化处理。在https://www.wendangku.net/doc/791606321.html, 早期版本中,对于此类情况,必须采取自定义方法“唤醒”https://www.wendangku.net/doc/791606321.html, 应用程序,然后在Global.asax文件的Application_Load方法中运行初始化代码。
为处理这种情况,当https://www.wendangku.net/doc/791606321.html, 4 在Windows Server 2008 R2 上的IIS 7.5 中运行时,可以使用一项新增的自动启动功能。该功能提供一种可控的方法来启动应用程序池,初始化https://www.wendangku.net/doc/791606321.html, 应用程序,然后接受HTTP 请求。通过这种方法,您可以在处理第一项HTTP 请求之前执行开销很大的应用程序初始化。
有关自动启动功能的更多信息,请参见What's New for https://www.wendangku.net/doc/791606321.html, 4 White Paper(https://www.wendangku.net/doc/791606321.html, 4 新增
功能白皮书)。
永久重定向页面
在应用程序的生存期内,Web 应用程序中的内容经常发生移动。这可能会导致链接过期,例如搜索
引擎返回的链接。
在https://www.wendangku.net/doc/791606321.html, 中,开发人员处理对旧URL 的请求的传统方式是使用Redirect方法将请求转发至新的URL。然而,Redirect方法会发出HTTP 302(“找到”)响应(用于临时重定向)。这会产生额外的HTTP 往返。
https://www.wendangku.net/doc/791606321.html, 4 增加了一个RedirectPermanent帮助器方法,使用该方法可以方便地发出HTTP 301(“永久移动”)响应,如下面的示例所示:
复制
RedirectPermanent("/newpath/foroldcontent.aspx");
识别永久重定向的搜索引擎及其他用户代理将存储与内容关联的新URL,从而消除浏览器用于临时
重定向的不必要的往返。
会话状态压缩
默认情况下,https://www.wendangku.net/doc/791606321.html, 提供两个用于存储整个Web 场中会话状态的选项。第一个选项是一个调用
进程外会话状态服务器的会话状态提供程序。第二个选项是一个在Microsoft SQL Server 数据库中
存储数据的会话状态提供程序。
由于这两个选项均在Web 应用程序的工作进程之外存储状态信息,因此在将会话状态发送至远程存储器之前,必须对其进行序列化。如果会话状态中保存了大量数据,序列化数据的大小可能变得很大。
https://www.wendangku.net/doc/791606321.html, 4 针对这两种类型的进程外会话状态提供程序引入了一个新的压缩选项。使用此选项,在Web 服务器上有多余CPU 周期的应用程序可以大大缩减序列化会话状态数据的大小。
可以使用配置文件中sessionState元素的新的compressionEnabled 特性设置此选项。当compressionEnabled 配置选项设置为true 时,https://www.wendangku.net/doc/791606321.html, 使用 .NET Framework GZipStream类对序列化会话状态进行压缩和解压缩。
扩展允许的URL 范围
https://www.wendangku.net/doc/791606321.html, 4 引入了一些新选项,用于扩展应用程序URL 的范围。以前版本的https://www.wendangku.net/doc/791606321.html, 根据NTFS 文件路径限制,将URL 路径长度约束为不超过260 个字符。在https://www.wendangku.net/doc/791606321.html, 4 中,可以根据应用程序的需要,使用httpRuntime 配置元素的两个新特性来选择增大(或减小)此限制。下面的示例演示这两个新特性。
复制
https://www.wendangku.net/doc/791606321.html, 4 还允许配置URL 字符检查所用的字符。当https://www.wendangku.net/doc/791606321.html, 在URL 的路径部分中发现无效字符时,它会拒绝请求并发出HTTP 400(错误的请求)状态代码。在以前版本的https://www.wendangku.net/doc/791606321.html, 中,URL 字符检查限于固定字符集。在https://www.wendangku.net/doc/791606321.html, 4 中,可以使用httpRuntime 配置元素的新requestPathInvalidChars 特性来自定义有效字符集,如下面的示例所示:
(在默认情况下分配给requestPathInvalidChars 的字符串中,会对小于(<)、大于(>) 以及“and”符号(&) 字符进行编码,这是因为Web.config 文件是XML 文件。)默认情况下,requestPathInvalidChars 特性将八个字符定义为无效字符。
注意
可扩展请求验证
https://www.wendangku.net/doc/791606321.html, 请求验证在传入HTTP 请求数据中搜索跨站点脚本(XSS) 攻击常用的字符串。如果发现潜在的XSS 字符串,请求验证会标记可疑字符串并返回错误。仅当内置请求验证发现XSS 攻击中使用的最常用字符串时,才会返回错误。以前尝试使XSS 验证积极报告,导致误报太多。不过,您可能希望请求验证更积极报告。相反,您可能又需要有意放松对特定页面或特定请求类型的XSS 检查。
在https://www.wendangku.net/doc/791606321.html, 4 中,请求验证功能可进行扩展,以便您使用自定义请求验证逻辑。若要扩展请求验证,请从新增的System.Web.Util.RequestValidator类派生创建一个类,然后将应用程序配置为使用自定义类型(在Web.config 文件的httpRuntime 节中)。有关更多信息,请参见
System.Web.Util.RequestValidator。
对象缓存和对象缓存扩展性
自第一个版本以来,https://www.wendangku.net/doc/791606321.html, 就提供了一个功能强大的内存中对象缓存
(System.Web.Caching.Cache)。缓存实现已很常见,在非Web 应用程序中也得到了使用。但是,仅仅为了使用https://www.wendangku.net/doc/791606321.html, 对象缓存而在Windows 窗体或WPF 应用程序中包含对System.Web.dll 的引用,这并不是一个好方法。为使缓存可用于所有应用程序,.NET Framework 4 引入了一个新程序集、一个新命名空间、一些基类型和一个具体缓存实现。新增的System.Runtime.Caching.dll 程序集在System.Runtime.Caching命名空间中包含一个新的缓存API。该命名空间包含两个核心类集:
?抽象类型,为构建任何类型的自定义缓存实现提供基础。
?一个具体内存中对象缓存实现(MemoryCache类)。
新MemoryCache类基本上是在https://www.wendangku.net/doc/791606321.html, 缓存基础上建模的,它的大部分内部缓存引擎逻辑与https://www.wendangku.net/doc/791606321.html, 相同。尽管为了支持自定义缓存开发,System.Runtime.Caching命名空间中的公共缓存API 已进行了更新,如果使用过https://www.wendangku.net/doc/791606321.html, Cache 对象,还是会在新API 中发现熟悉的概念。
可扩展的HTML、URL 和HTTP 标头编码
在https://www.wendangku.net/doc/791606321.html, 4 中,可以为以下常见文本编码任务创建自定义编码例程:
?HTML 编码。
?URL 编码。
?HTML 特性编码。
?对出站HTTP 标头编码。
通过从新System.Web.Util.HttpEncoder类型派生,然后将https://www.wendangku.net/doc/791606321.html, 配置为在Web.config 文件的httpRuntime 节中使用自定义类型,可以创建自定义编码器,如下面的示例所示:
在配置自定义编码器之后,只要调用HttpUtility或HttpServerUtility类的公共编码方法,https://www.wendangku.net/doc/791606321.html, 就会自动调用自定义编码实现。这样,Web 开发团队的部分人员可以通过创建自定义编码器实现主动字符编码,而其余Web 开发团队人员可以继续使用公共https://www.wendangku.net/doc/791606321.html, 编码API。通过在httpRuntime 元素中集中配置自定义编码器,可确保来自公共https://www.wendangku.net/doc/791606321.html, 编码API 的所有文本编码调用都通过自定义编码器进行路由。
单个辅助进程中对各应用程序的性能监视
为了增加单个服务器可承载的网站数,许多宿主在单个辅助进程中运行多个https://www.wendangku.net/doc/791606321.html, 应用程序。但是,如果多个应用程序使用单个共享辅助进程,则服务器管理员难以确定是哪个应用程序遇到了问题。
https://www.wendangku.net/doc/791606321.html, 4 利用了CLR 引入的新资源监视功能。若要启用此功能,可以将下面的XML 配置代码段添加到aspnet.config 配置文件。
复制
(aspnet.config 文件位于 .NET Framework 的安装目录中。它不是应用程序Web.config 文件。)如果启用appDomainResourceMonitoring 功能,“https://www.wendangku.net/doc/791606321.html, Applications”性能类别中会提供两个新性能计数器:% Managed Processor Time(托管处理器时间)和Managed Memory Used(使用的托管内存)。这两个性能计数器使用新CLR 应用程序域资源管理功能跟踪各个https://www.wendangku.net/doc/791606321.html, 应用程序的估计CPU 时间和托管内存使用率。因此在https://www.wendangku.net/doc/791606321.html, 4 中,管理员现在可更加详细地查看在单个辅助进程中运行的各个应用程序的资源消耗。
Web 窗体和MVC 附带的jQuery
Visual Studio 的Web 窗体和MVC 模板包括开放源代码jQuery 库。创建新网站或项目时,会创建包含以下文件的“脚本”文件夹:
?jQuery-1.4.1.js –可阅读的未缩减版jQuery 库。(缩减是从代码中删除非必要字符的做法,这样可以减小代码大小,缩短加载和执行时间。)
?jQuery-14.1.min.js –缩减版jQuery 库。
?jQuery-1.4.1-vsdoc.js – jQuery 库的IntelliSense 文档文件。
在应用程序开发过程中包含未缩减版jQuery。包含缩减版jQuery 以开发应用程序。
内容传送网络支持
通过Microsoft Ajax 内容传送网络(CDN) 可以方便地将https://www.wendangku.net/doc/791606321.html, Ajax 和jQuery 脚本添加到Web 应用程序。例如,将script 元素添加到指向https://www.wendangku.net/doc/791606321.html, 的页面,就可开始使用jQuery 库,如下面的示例所示:
复制
通过利用Microsoft Ajax CDN,可以显著改进Ajax 应用程序的性能。Microsoft Ajax CDN 的内容缓存在世界各地的服务器上。此外,Microsoft Ajax CDN 使浏览器可以对位于不同域的网站重用缓存的JavaScript 文件。Microsoft Ajax CDN 支持SSL (https://),以防您需要使用安全套接字层为网页提供服务。
https://www.wendangku.net/doc/791606321.html, ScriptManager控件支持Microsoft Ajax CDN。按照下面的示例所示设置EnableCdn属性,以从CDN 检索所有https://www.wendangku.net/doc/791606321.html, Framework JavaScript 文件:
复制
当EnableCdn属性设置为true 时,https://www.wendangku.net/doc/791606321.html, Framework 会从CDN 检索所有https://www.wendangku.net/doc/791606321.html, Framework JavaScript 文件,包括用于验证和UpdatePanel控件的所有JavaScript 文件。这可能会对Web 应用程序的性能产生重大影响。
您可以使用WebResourceAttribute特性为自己的JavaScript 文件设置CDN 路径。新的CdnPath属性指定在将EnableCdn属性设置为true 时使用的CDN 的路径,如下面的示例所示:
复制
[assembly: WebResource("Example.js", "application/x-javascript", CdnPath ="https://www.wendangku.net/doc/791606321.html,/app/site/Example.js")]
有关Microsoft Ajax CDN 的更多信息,请参见https://www.wendangku.net/doc/791606321.html, 网站上的Microsoft Ajax Content Delivery Network(Microsoft Ajax 内容传送网络)。
ScriptManager 显式脚本
如果在早期版本的https://www.wendangku.net/doc/791606321.html, 中使用https://www.wendangku.net/doc/791606321.html, ScriptManager,Web 应用程序必须加载整个https://www.wendangku.net/doc/791606321.html, Ajax Library。通过利用新的AjaxFrameworkMode属性,可以精确控制加载https://www.wendangku.net/doc/791606321.html, Ajax Library 的哪些组件。有关更多信息,请参见AjaxFrameworkMode属性。
https://www.wendangku.net/doc/791606321.html, Web 窗体
从https://www.wendangku.net/doc/791606321.html, 1.0 版开始,Web 窗体已成为https://www.wendangku.net/doc/791606321.html, 中的核心功能。https://www.wendangku.net/doc/791606321.html, 4 在这方面做了许多改进,例如以下方面:
?可以设置meta 标记。
?加强对视图状态的控制。
?支持最近引入的浏览器和设备。
?可以更方便地使用浏览器功能。
?支持对Web 窗体使用https://www.wendangku.net/doc/791606321.html, 路由。
?加强对生成的ID 的控制。
?可以将所选行保留在数据控件中。
?加强对FormView 和ListView 控件中呈现的HTML 的控制。
?支持数据源控件的筛选。
?对Web 标准和辅助功能的增强支持。
?项目模板更改。
使用Page.MetaKeywords 和Page.MetaDescription 属性设置图元标记
Page类增加了两个属性:MetaKeywords和MetaDescription。这两个属性表示所呈现HTML 中与页面对应的meta 标记,如下面的示例所示:
复制
这两个属性的工作方式与Title属性类似,可以在@ Page指令中对其进行设置。有关更多信息,请参见Page.MetaKeywords和Page.MetaDescription。
为各个控件启用视图状态
Control类增加了一个新属性:ViewStateMode。使用该属性,可以针对页面上未显式启用视图状态的所有控件禁用视图状态。
视图状态数据包含在页面的HTML 中,在将页面发送至客户端和发回时会延长所用时间。存储多余的视图状态可能会导致性能显著降低。在https://www.wendangku.net/doc/791606321.html, 的早期版本中,可通过禁用特定控件的视图状态来减轻视图状态对页面性能的影响。但是有时,与为多数不需要视图状态的控件禁用该状态相比,为少数需要视图状态的控件启用该状态更加简便。
有关更多信息,请参见Control.ViewStateMode。
支持最近引入的浏览器和设备
https://www.wendangku.net/doc/791606321.html, 包含一项名为“浏览器功能”的功能,可用于确定用户浏览器的功能。浏览器功能由存储在HttpRequest.Browser属性中的HttpBrowserCapabilities对象表示。有关特定浏览器功能的信息由浏览器定义文件定义。在https://www.wendangku.net/doc/791606321.html, 4 中,这些浏览器定义文件已更新为包含有关最近引入的浏览器和设备(如Google Chrome, Research in Motion BlackBerry 智能电话和Apple iPhone)的信息。现有的浏览器定义文件也已更新。有关更多信息,请参见如何:将 https://www.wendangku.net/doc/791606321.html, Web 应用程序升级到https://www.wendangku.net/doc/791606321.html, 4和https://www.wendangku.net/doc/791606321.html, Web 服务器控件和浏览器功能。
下面的列表显示了https://www.wendangku.net/doc/791606321.html, 4 附带的浏览器定义文件:
?blackberry.browser
?chrome.browser
?Default.browser
?firefox.browser
?gateway.browser
?generic.browser
?ie.browser
?iemobile.browser
?iphone.browser
?opera.browser
?safari.browser
定义浏览器功能的新方式
https://www.wendangku.net/doc/791606321.html, 4 包含一项称为“浏览器功能提供程序”的新功能。顾名思义,此功能可用于构建一个提供程序,该提供程序又可用于编写自定义代码以确定浏览器功能。
在https://www.wendangku.net/doc/791606321.html, 3.5 版Service Pack 1 中,需要在一个XML 文件中定义浏览器功能。该文件位于计算机级文件夹或应用程序级文件夹中。大部分开发人员不需要自定义这些文件,但对于需要的人员,使用提供程序的方法比处理复杂的XML 语法更为简便。通过提供程序方法可以简化进程,方法是实施一种通用浏览器定义语法或包含最新浏览器定义的数据库,甚至是用于此类数据库的Web 服务。
有关新的浏览器功能提供程序的更多信息,请参见What's New for https://www.wendangku.net/doc/791606321.html, 4 White Paper(https://www.wendangku.net/doc/791606321.html, 4 新增功能白皮书)。
https://www.wendangku.net/doc/791606321.html, 4 中的路由
https://www.wendangku.net/doc/791606321.html, 4 增加了对使用Web 窗体进行路由的内置支持。路由是https://www.wendangku.net/doc/791606321.html, 3.5 SP1 引入的一项功能,通过此功能可将应用程序配置为使用对用户和搜索引擎有意义的URL,这样无需指定物理文件名。使用这项功能,可以提高站点的用户友好度,并增加站点内容被搜索引擎发现的概率。
例如,显示应用程序中产品类别的某个页面的URL 如下面的示例所示:
http://website/products.aspx?categoryid=12
通过路由功能,可以使用下面的URL 呈现相同的信息:
http://website/products/software
第二个URL 使用户了解将获得的内容,并且可以显著提高在搜索引擎搜索结果中的排名。
新功能包括:
?PageRouteHandler类是一个用于定义路由的简单HTTP 处理程序。您不必再编写自定义路由处理程序了。
?HttpRequest.RequestContext和Page.RouteData属性可方便用户访问URL 参数中传递的信息。
?The RouteUrl 表达式提供了在标记中创建路由URL 的简单方法。
?The RouteValue 表达式提供了提取标记中的URL 参数值的简单方法。
?RouteParameter类便于将URL 参数值传递到数据源控件的查询(类似于FormParameter)。
?您不必再更改Web.config 文件以启用路由了。
有关路由的更多信息,请参见以下主题:
?https://www.wendangku.net/doc/791606321.html, 路由
?演练:在 Web 窗体应用程序中使用 https://www.wendangku.net/doc/791606321.html, 路由
?如何:定义 Web 窗体应用程序的路由
?如何:通过路由构造 URL
?如何:在路由页面中访问 URL 参数
设置客户端ID
新的ClientIDMode属性可方便用户编写引用服务器控件呈现的HTML 元素的客户端脚本。Microsoft Ajax 的使用日益增多,因此需要进行此操作的情况越发常见。例如,您可能有一个用于呈现很长的产品价目表的数据控件,并且希望使用客户端脚本令Web 服务在各个价格变化时对其进行调用和更新,而不刷新整个页面。
通常情况下,可使用document.GetElementById 方法在客户端脚本中获得对HTML 元素的引用。您需要将要引用的HTML 元素的id 特性值传递到该方法。对于https://www.wendangku.net/doc/791606321.html, 服务器控件呈现的元素,https://www.wendangku.net/doc/791606321.html, 的早期版本可能难以甚至无法实现上述操作。您并非总能预测https://www.wendangku.net/doc/791606321.html, 将生成的id 值,而https://www.wendangku.net/doc/791606321.html, 也可能生成很长的id 值。对于将针对您标记中控件的单个实例生成多个行的数据控件,该问题特别难以解决。
https://www.wendangku.net/doc/791606321.html, 4 增加了两种用于生成id 特性的新算法。这些算法可生成更易用于客户端脚本的id 特性,因为它们的可预测性更强,并且由于更简单因而使用起来更方便。有关如何使用这些新算法的更多信息,请参见以下主题:
?https://www.wendangku.net/doc/791606321.html, Web 服务器控件标识
?演练:使数据绑定控件更容易从 JavaScript 中访问
?演练:使位于 Web 用户控件中的控件更容易从 JavaScript 中访问
?如何:从 JavaScript 中按 ID 访问控件
在数据控件中保持行选择
使用GridView和ListView控件,用户可选择一个行。在https://www.wendangku.net/doc/791606321.html, 的早期版本中,行选择是基于页面的行索引进行的。例如,如果选择页面 1 上的第三个项,然后移至页面2,则会选定页面 2 上的第三个项。在大多数情况下,更理想的情况是不选择页面 2 上的任何行。https://www.wendangku.net/doc/791606321.html, 4 支持持久化选择,这项新功能最初仅在 .NET Framework 3.5 SP1 中的动态数据项目中提供。启用此功能后,将基于行数据键选择项。这意味着,如果选择页面 1 上的第三个行,然后移至页面2,则不会选定页面 2 上的任何内容。当您移回页面 1 时,仍将选定第三个行。与https://www.wendangku.net/doc/791606321.html, 早期版本中的行为相比,这种行为自然得多。目前针对所有项目中的GridView和ListView控件支持持久化选择。例如,您可通过设置EnablePersistedSelection属性在GridView控件中启用此功能,如下面的示例所示:
复制
FormView 控件增强功能
FormView控件已改进,使用CSS 简化了控件内容的样式设置。在https://www.wendangku.net/doc/791606321.html, 的早期版本中,FormView 控件使用项模板呈现内容。这使得在标记中进行样式设置十分困难,因为控件会呈现意外的表行和表单元格标记。FormView控件支持https://www.wendangku.net/doc/791606321.html, 4 中的属性RenderOuterTable。当此属性设置为false 时(如下面的示例所示),不会呈现表标记。这样更容易对控件内容应用CSS 样式。
复制
有关更多信息,请参见FormView Web 服务器控件概述。
ListView 控件增强功能
https://www.wendangku.net/doc/791606321.html, 3.5 中引入的ListView 控件具备GridView 控件的所有功能,同时使您可以全面控制输出。在https://www.wendangku.net/doc/791606321.html, 4 中,简化了此控件的使用。该控件的早期版本要求您指定布局模板,其中包含一个具有已知ID 的服务器控件。下面的标记显示了在https://www.wendangku.net/doc/791606321.html, 3.5 中使用ListView 控件的典型示例。
复制
<% Eval("LastName")%>
在https://www.wendangku.net/doc/791606321.html, 4 中,ListView 控件不需要布局模板。上面示例中的标记可以替换为下面的标记:
复制
<% Eval("LastName")%>
有关更多信息,请参见ListView Web 服务器控件概述。
使用QueryExtender 控件筛选数据
对于创建数据驱动的网页的开发人员,一项十分常见的任务就是筛选数据。该任务的传统执行方法是在数据源控件中生成Where 子句。这种方法可能十分复杂,而且在某些情况下,通过Where 语法无法充分利用基础数据库的全部功能。
为简化筛选操作,https://www.wendangku.net/doc/791606321.html, 4 中增加了一个新的QueryExtender控件。可以将此控件添加到EntityDataSource或LinqDataSource控件以筛选这些控件返回的数据。QueryExtender控件依赖于LINQ,但您无需了解如何编写LINQ 查询即可使用该查询扩展程序。
QueryExtender控件支持多种筛选选项。下表列出了QueryExtender的筛选选项。
有关更多信息,请参见QueryExtenderQueryExtender Web 服务器控件概述。
对Web 标准和辅助功能的增强支持
https://www.wendangku.net/doc/791606321.html, 控件的早期版本有时会呈现不符合HTML、XHTML 或辅助功能标准的标记。https://www.wendangku.net/doc/791606321.html, 4 消除了其中大部分异常情况。
有关各个控件呈现的HTML 与辅助功能标准符合程度的详细信息,请参见https://www.wendangku.net/doc/791606321.html, 控件和辅助功能。
用于可禁用控件的CSS
在https://www.wendangku.net/doc/791606321.html, 3.5 中,禁用某个控件时(请参见WebControl.Enabled),会将一个disabled 特性添
加到呈现的HTML 元素中。例如,下面的标记将创建一个已禁用的Label控件:
Text="Test" Enabled="false" /> 在https://www.wendangku.net/doc/791606321.html, 3.5 中,原有控件设置将生成以下HTML: Test 在HTML 4.01 中,针对span 元素将disabled 特性视为无效。它仅对input 元素有效,因为它指定这些元素无法访问。对于仅供显示的元素(如span),浏览器通常支持呈现禁用的外观,但根据辅助功能标准,依赖于这种非标准行为的网页并不可靠。 对于仅供显示的元素,应使用CSS 指明已禁用的可视外观。因此在默认情况下,https://www.wendangku.net/doc/791606321.html, 4 将针对上面显示的控件设置生成以下HTML: Test 通过设置DisabledCssClass属性,可以更改控件禁用时默认呈现的class 特性的值。 用于验证控件的CSS 在https://www.wendangku.net/doc/791606321.html, 3.5 中,验证控件呈现将默认颜色red 呈现为内联样式。例如,下面的标记创建一个RequiredFieldValidator控件: ErrorMessage="Required Field" ControlToValidate="RadioButtonList1" /> https://www.wendangku.net/doc/791606321.html, 3.5 为验证程序控件呈现以下HTML: style="color:Red;visibility:hidden;">RequiredFieldValidator 默认情况下,https://www.wendangku.net/doc/791606321.html, 4 不会呈现将颜色设置为红色的内联样式。内联样式仅用于隐藏或显示验证程序,如下面的示例所示: style"visibility:hidden;">RequiredFieldValidator 因此,https://www.wendangku.net/doc/791606321.html, 4 不会自动以红色显示错误消息。有关如何使用CSS 为验证控件指定可视样式的信息,请参见在 https://www.wendangku.net/doc/791606321.html, 网页中验证用户输入。 用于隐藏字段Div 元素的CSS https://www.wendangku.net/doc/791606321.html, 使用隐藏字段存储状态信息,如视图状态和控件状态。这些隐藏字段包含在div 元素中。在https://www.wendangku.net/doc/791606321.html, 3.5 中,此div 元素没有class 特性或id 特性。因此,影响所有div 元素的CSS 规则可能会在无意中导致此div 变为可见状态。为避免这种问题,https://www.wendangku.net/doc/791606321.html, 4 使用一个CSS 类呈现隐藏字段的div 元素,该类可用于将隐藏字段div 与其他元素区分开来。下面的示例显示了新类的值: 用于Table、Image 和ImageButton 控件的CSS 默认情况下在https://www.wendangku.net/doc/791606321.html, 3.5 中,某些控件会将所呈现HTML 的border 特性设置为零(0)。下面的示例显示由https://www.wendangku.net/doc/791606321.html, 3.5 中的Table控件生成的HTML: Image控件和ImageButton控件也会这样。由于此设置没有必要,而且会提供应通过使用CSS 提供的可视格式设置信息,因此在https://www.wendangku.net/doc/791606321.html, 4 中未生成该特性。 用于UpdatePanel 和UpdateProgress 控件的CSS 在https://www.wendangku.net/doc/791606321.html, 3.5 中,UpdatePanel和UpdateProgress控件不支持expando 特性。因此无法针对它们呈现的HTML 元素设置CSS 类。在https://www.wendangku.net/doc/791606321.html, 4 中,这些控件已更改为接受expando 特性,如下面的示例所示: 下面是此标记呈现的HTML: 消除不需要的外部表 在https://www.wendangku.net/doc/791606321.html, 3.5 中,以下控件呈现的HTML 包装在一个table 元素中,该元素的用途是将内联样式应用于整个控件: ?FormView ?Login ?PasswordRecovery ?ChangePassword 如果使用模板自定义这些控件的外观,则可以在您在模板中提供的标记中指定CSS 样式。在这种情况下,不需要额外的外部表。在https://www.wendangku.net/doc/791606321.html, 4 中,通过将新的RenderOuterTable属性设置为false,可以避免呈现表。 向导控件的布局模板 在https://www.wendangku.net/doc/791606321.html, 3.5 中,Wizard和CreateUserWizard控件可生成用于可视格式设置的HTML table 元素。在https://www.wendangku.net/doc/791606321.html, 4 中,可以使用LayoutTemplate 元素指定布局。如果这样做,将不生成HTML table 元素。在模板中,可创建占位符控件来指示应在该控件中动态插入项的位置。(这与ListView控件的模板模型的工作方式类似。)有关更多信息,请参见https://www.wendangku.net/doc/791606321.html,youtTemplate属性。 用于CheckBoxList 和RadioButtonList 控件的新增HTML 格式设置选项 https://www.wendangku.net/doc/791606321.html, 3.5 使用HTML 表元素为CheckBoxList和RadioButtonList控件的输出设置格式。为提供不使用表进行可视格式设置的替代方法,https://www.wendangku.net/doc/791606321.html, 4 为RepeatLayout枚举增加了两个选项: ?UnorderedList.此选项指定使用ul 和li 元素而不是表对HTML 输出进行格式设置。 ?OrderedList.此选项指定使用ol 和li 元素而不是表对HTML 输出进行格式设置。 有关新选项呈现的HTML 的示例,请参见RepeatLayout枚举。 Table 控件的页眉和页脚元素 在https://www.wendangku.net/doc/791606321.html, 3.5 中,可通过设置TableHeaderRow类和TableFooterRow类的TableSection属性将Table控件配置为呈现thead 和tfoot 元素。在https://www.wendangku.net/doc/791606321.html, 4 中,这些属性均默认设置为适当的值。 Menu 控件的CSS 和ARIA 支持 在https://www.wendangku.net/doc/791606321.html, 3.5 中,Menu控件使用HTML table 元素进行可视格式设置,在某些配置中无法通过键盘访问该控件。https://www.wendangku.net/doc/791606321.html, 4 通过以下方法解决了这些问题,并提高了可访问性: ?生成的HTML 具有无序列表(ul 和li 元素)的结构。 ?使用CSS 进行可视格式设置。 ?菜单按照ARIA 标准实现键盘访问。可以使用箭头键在菜单项中进行导航。(有关ARIA 的信息,请参见Visual Studio 和 https://www.wendangku.net/doc/791606321.html, 中的辅助功能。) ?ARIA 角色和属性特性将添加到生成的HTML 中。(通过使用JavaScript 添加特性而不直接将其包含于HTML 中,以免生成的HTML 产生标记验证错误。) Menu控件的样式呈现在页面顶部的style 块中,而不是与呈现的HTML 元素内联呈现。如果要使用单独的CSS 文件以便于修改菜单样式,可以将Menu控件的新的IncludeStyleBlock属性设置为false,这样便不会生成样式块。 用于HtmlForm 控件的有效XHTML 在https://www.wendangku.net/doc/791606321.html, 3.5 中,HtmlForm控件(由