ASP.NET BulletedList禁用项与XHTML 1.0 Strict DOCTYPE不兼容

ASP.NET BulletedList禁用项与XHTML 1.0 Strict DOCTYPE不兼容,asp.net,xhtml,bulletedlist,Asp.net,Xhtml,Bulletedlist,我有一个网站,我试图使其符合XHTML1.0标准。 doctype已相应声明,我已使用以下内容设置web.config: <system.web> <xhtmlConformance mode="Strict"/> </system.web> 我现在的问题就在这里。我有一个BulletedList服务器控件,其显示模式设置为BulletedListDisplayMode.HyperLink 此控件由web.sitemap xml文件中的条目填

我有一个网站,我试图使其符合XHTML1.0标准。 doctype已相应声明,我已使用以下内容设置web.config:

  <system.web>
    <xhtmlConformance mode="Strict"/>
  </system.web>
我现在的问题就在这里。我有一个BulletedList服务器控件,其显示模式设置为BulletedListDisplayMode.HyperLink

此控件由web.sitemap xml文件中的条目填充,其中第一个在代码隐藏中被禁用并设置为false。这将输出一个具有禁用属性的锚定标记。然而,这是不符合的

<ul id="example">
    <li class="first"><a disabled="disabled">test1</a></li>
    <li><a href="#">test2</a></li>
</ul>
当我针对W3验证器进行验证时,它会因此失败。这是臭虫吗?考虑到SETXHTML的一致性,我本以为锚标记根本没有呈现


我只是想让列表中的第一项显示为纯文本,而不是禁用的链接。有什么建议吗?

您可以随时扩展BulletedList控件并适当地重新实现该部分。

问题在于禁用的属性不应应用于锚定标记,而应仅应用于少数输入元素,如按钮


你有没有尝试过用class first修改列表项中锚定标记的css样式?

我要睡觉了,但我会在这里剪掉一个,给你一个可能的起点


您可以按照上面silky所说的操作,覆盖OnRender,或者您可以查看是否可以使用System.Web.UI.Adapters.ControlAdapter和浏览器文件完成任务。ControlAdapter的缺点是它会覆盖整个站点。

是的,我以前也有过这样的功能,但因为它仍然可以点击,所以我尝试了这个功能,然后发现它无法通过验证程序。不幸的是,我不知道如何做。你能举个例子吗?我一点也不知道;我可能会使用Reflector来检查该类的源代码,查看它在哪里进行这种类型的渲染,然后在基类中重新实现它以您自己的方式进行渲染。