ASP.NET 控件的早期版本有时会呈现不符合 HTML、XHTML 或辅助功能标准的标记。ASP.NET 4 消除了其中大部分异常情况。

1.用于可禁用控件的 CSS

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

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

Text="Test" Enabled="false" />

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

<span id="Label1" disabled="disabled">Test</span>

在 HTML 4.01 中,针对 span 元素将 disabled 特性视为无效。它仅对 input 元素有效,因为它指定这些元素无法访问。对于仅供显示的元素(如 span),浏览器通常支持呈现禁用的外观,但根据辅助功能标准,依赖于这种非标准行为的网页并不可靠。

对于仅供显示的元素,应使用 CSS 指明已禁用的可视外观。因此在默认情况下,ASP.NET 4 将针对上面显示的控件设置生成以下 HTML:

<span id="Label1" class="aspNetDisabled">Test</span>

通过设置 DisabledCssClass 属性,可以更改控件禁用时默认呈现的 class属性的值。

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与其他元素区分开来。下面的示例显示了新类的值:

<div class="aspNetHidden">

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

默认情况下在 ASP.NET 3.5 中,某些控件会将所呈现 HTML 的 border 属性设置为零。下面的示例显示由 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 中,以下控件呈现的HTML包装在一个table元素中,该元素的用途是将内联样式应用于整个控件:

  • FormView
    Login
    PasswordRecovery
    ChangePassword

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

7.向导控件的布局模板

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

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 具有无序列表(ul 和 li 元素)的结构。

  • 使用 CSS 进行可视化格式设置。

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

  • ARIA 角色和属性特性将添加到生成的 HTML 中。(通过使用 JavaScript 添加的特性而不是直接将其包含在 HTML 中,以免生成的 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 版本相同。

转载于:https://www.cnblogs.com/longgel/archive/2010/06/03/1750707.html

ASP.NET 4新增功能(三) 对Web标准的支持和辅助功能的增强相关推荐

  1. 工业ERP管理系统新增功能对企业有哪些好处?

    ERP管理系统的应用对生产制造业的发展极为重要,为了适应生产制造业更好的发展,ERP管理系统也在不断优化和改善,从产品的制造.原料的采购.库存.销售以及财务等管理细节都逐步更加完善,使用户体验感更佳. ...

  2. Web标准概念--摘抄《CSS布局实录》

    前言 对于日常的很多事情,我们并没有注意到这背后都有着一个隐藏的"因素"在起作用,这个因素就是:标准. 生活中各行各业都有着自己相应的标准与规范,标准可以方便交流.促进协作.提高效 ...

  3. 一、网页、Web浏览器、Web标准

    一.网页 1.1 什么是网页 网站\color{red}{网站}网站是指在因特网上根据一定的规则,使用HTML等制作的,用于展示特定内容相关的网页集合. 网页\color{red}{网页}网页是网站中 ...

  4. ASP.NET Core 5.0新增功能摘要

    .NET5.0发布了大半个月,从.NET Core3.1的平滑迁移体验令人心旷神怡,改个targetframework就完成迁移,不要太轻松!然而,ASP.NET Core5.0也有很多有意思的改变, ...

  5. ASP.NET 2.0 本地化功能:本地化 Web 应用程序的新方法

    适用于: Microsoft ASP.NET 2.0 Microsoft Visual Studio .NET Microsoft Visual Studio 2005 本地化 摘要:随着越来越多的公 ...

  6. IIS6.0下ASP的新增功能

    ASP 的新增功能 除了内部性能增强和优化外,该版本的 Active Server Pages(ASP) 还具有如下新功能: 更好的国际化和 UTF-8 支持 改进的 POST 支持 ASP 挂起检测 ...

  7. LayIM 3.9.1与ASP.NET SignalR实现Web聊天室快速入门(四)之ASP.NET SignalR核心功能介绍

    前言 本系列文章特点:使用ASP.NET SignalR和LayIM快速入门对接,实现一对一聊天,群聊,添加聊天群组,查找聊天记录等功能.源代码不包含LayIM的源代码,因为官方并没开源属于收费资源, ...

  8. 评论回复功能 asp.net_一键抠图 更快 更强!六月新版 PS 2020 21.2 新增功能测试报告...

    一键抠图 更快 更强!六月新版 PS 2020 21.2 新增功能测试报告! 紫枫前几天发布了 Adobe Photoshop 2020 21.2.0.225 最新版本,今天来说说这个版本的新增功能. ...

  9. KSO-.NET 6 中的新增功能

    .NET 6 中的新增功能 .NET 6 提供 .NET 统一计划的最终部分,该计划在 .NET 5 中启动. .NET 6 在移动.桌面.IoT 和云应用之间统一了 SDK.基础库和运行时. 除了这 ...

最新文章

  1. mybatis的union查询
  2. angle-class
  3. nowcoder20C 位数差
  4. 在现有k8s集群中安装kubesphere时报错:metrics-server failed
  5. linux lynx 源码,Linux移植浏览器 Lynx字符浏览器移植
  6. 原来R语言还有这些不为人知的用处!
  7. Linux epoll 笔记(高并发事件处理机制)
  8. 备战520|Python花式表白的几种姿势
  9. mysql redis geo_利用Redis的Geo功能实现查找附近的位置
  10. 如何解决JSP中文乱码问题
  11. Map.Entry使用详解
  12. html事件中写js,html标签中绑定触发事件与js中绑定触发事件写法上的区别
  13. 【几何/数学】概念的理解 —— (非)刚体变换((non-)rigid transformation)
  14. 2014年12月份工作日学习计划
  15. PowerBuilder 开发的游戏(建房子)
  16. 网页php如何判断登录手机串号_php判断是否是手机登陆
  17. 2019年淘宝新开店铺怎么提升销量
  18. android apk u盘升级_android升级安装包--包解析错误
  19. 数字电路 时序逻辑电路
  20. HTML+CSS+JavaScript速成

热门文章

  1. spring bean的初始化和销毁
  2. 本次案例:对于sun 服务器的故障排查
  3. MONGODB 集群 配置及 客户端PHP 连接
  4. Dagger2 在 Android 项目的正确使用方式【完整篇】
  5. Charles 抓包 从入门到精通
  6. tensorflow保存模型和加载模型的方法(Python和Android)
  7. 关于input单选框的radio属性
  8. 计算机组成原理——指令流水线
  9. 一些常见http状态码
  10. Android 关于ListView中按钮监听的优化问题(方法二)