我希望清理一些由 .NET 2.0 TreeView 控制器生成的 HTML。切换到另一个版本/型号不是一个可用的选项。
我的第一次破解产生了一个扩展的 TreeView,它带有一个重写的 Render,它正则表达式将我不需要的文本输出到页面。
问题是当我试图折叠/展开树的节点时,我的回发事件没有被触发。我的假设是我不需要再做任何重写,因为父 TreeView 控制器将处理回发事件。
我错过了什么?
使用 ASP.NET CSS 控制适配器:
http://www.asp.net/CSSAdapters/TreeView.aspx
如果没有适配器,两者都使用 HTML <table> 标签。可以使用控制适配器,以便呈现嵌套的 <ul> 标记。然后可以使用 CSS 和 JavaScript 的组合来显示和隐藏树或菜单的层次结构的一部分。移除 CSS 和 JavaScript 后,适应的 HTML 会降级为简单的嵌套无序列表,屏幕阅读器等可以轻松解释这些列表。您可以通过在左侧的主题选择器中将主题设置为无来亲自查看。
您正则表达式删除了控件处理回发所需的内容。它可能是高度复杂的 id 或 runat 属性......不管它是什么,如果你被 web 控件困住,你就会被糟糕的 html 困住。
做你想做的事情的唯一真正(和非破坏性)方法不是扩展当前控件,而是使用Control Adapters。已经有使用 css 进行定位的控制适配器。 这是 ScottGu 关于这些 CSS 适配器的帖子。