ASP.NET 2.0: 执行Web标准以便更加易于访问
/browser>
<browser id="W3C_Validator" parentID="default">
<identification>
<userAgent match="^W3C_Validator" />
</identification>
<capabilities>
<capability name="browser" value="W3C Validator" />
<capability name="ecmaScriptVersion" value="1.2" />
<capability name="javascript" value="true" />
<capability name="supportsCss" value="true" />
<capability name="supportsCallback" value="true" />
<capability name="tables" value="true" />
<capability name="tagWriter"
value="System.Web.UI.HtmlTextWriter" />
<capability name="w3cdomversion" value="1.0" />
</capabilities>
</browser>
</browsers>
实现 CSS 控件适配器的最后一步是创建一个由适配器类派生的类。图 7 显示了随 ASP.NET 2.0 控件适配器附带的示例菜单适配器。该类由 MenuAdapter 类派生而来,它可以枚举构成控件的所 有项目并使用适当的标记重写 HTML。此处所示的内容是该类的一部分,该类以 BuildItems 方法呈现无序列表 的开始部分。 Figure 7 菜单控件适配器 HTML 输出 Public Class MenuAdapter Inherits System.Web.UI.WebControls.Adapters.MenuAdapter ... Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter) If (Extender.AdapterEnabled) Then writer.Indent = writer.Indent + 1 BuildItems(Control.Items, True, writer) writer.Indent = writer.Indent—1 writer.WriteLine() Else MyBase.RenderContents(writer) End If End Sub Private Sub BuildItems(ByVal items As MenuItemCollection, _ ByVal isRoot As Boolean, ByVal writer As HtmlTextWriter) If (items.Count > 0) Then writer.WriteLine() writer.WriteBeginTag("ul") If isRoot Then writer.WriteAttribute("class", "AspNet-Menu") End If writer.Write(HtmlTextWriter.TagRightChar) writer.Indent = writer.Indent + 1 For Each item As MenuItem In items BuildItem(item, writer) Next writer.Indent = writer.Indent—1 writer.WriteLine() writer.WriteEndTag("ul") End If End Sub End Class 查看图 8 中的 HTML 源时,您会发现菜单控件中的表格被无序列表取代。但是,无序列表 并不是 HTML 输出中唯一值得关注的主题。由于输出不与样式和脚本代码混在一起,所以输出也十分整洁。现在 ,所有的定位和样式都驻留在菜单的 CSS 文件中,现在可以认为菜单符合 Web 标准。 Figure 8 菜单控件适配器 HTML 输出 <div class="AspNet-Menu- Horizontal"> |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |