Отключенный элемент ASP.NET BulletedList не соответствует стандарту XHTML 1.0 Strict DOCTYPE

У меня есть сайт, который я пытался сделать совместимым с XHTML 1.0 Strict. Тип документа был объявлен соответствующим образом, и я установил в web.config следующее:

  <system.web>
    <xhtmlConformance mode="Strict"/>
  </system.web>

Теперь моя проблема здесь. У меня есть серверный элемент управления BulletedList, для которого DisplayMode установлен BulletedListDisplayMode.HyperLink.

Этот элемент управления заполняется записями из xml-файла web.sitemap, первая из которых отключена (для параметра enabled установлено значение false в коде программной части). Следовательно, это выводит тег привязки с отключенным атрибутом. Однако это не соответствует требованиям.

<ul id="example">
    <li class="first"><a disabled="disabled">test1</a></li>
    <li><a href="#">test2</a></li>
</ul>

Когда я проверяю это на валидаторе W3, он не работает из-за этого. Это ошибка? Учитывая установленное соответствие xhtml, я ожидал, что тег привязки вообще не будет отображаться.

Я просто пытаюсь сделать так, чтобы первый элемент в списке отображался как обычный текст, а не как отключенная ссылка. Какие-либо предложения?


person Community    schedule 13.08.2009    source источник


Ответы (3)


Вы всегда можете расширить элемент управления BulletedList и соответствующим образом повторно реализовать эту часть.

person Noon Silk    schedule 13.08.2009
comment
К сожалению, я не знаю, как это сделать. Не могли бы вы привести пример? - person ; 13.08.2009
comment
Я не знаю из головы; Я бы потенциально использовал Reflector, чтобы проверить источник этого класса, посмотреть, где он выполняет этот тип рендеринга, а затем повторно реализовать его, чтобы сделать это по-своему в вашем базовом классе. - person Noon Silk; 13.08.2009

Проблема в том, что атрибут disabled не следует применять к тегу привязки - только к нескольким элементам ввода, например к кнопке.

Вы пробовали изменить свой стиль css для тега привязки в элементе списка с классом «первый»?

person Jay    schedule 13.08.2009
comment
Да, у меня раньше было это так, но поскольку он все еще был интерактивным, я попробовал это, и затем было замечено, что он не прошел валидатор. - person ; 13.08.2009

Я иду спать, но я собираюсь выстрелить в это, чтобы дать вам возможную отправную точку.

Вы могли бы сделать, как сказано выше, и переопределить OnRender, или вы могли бы посмотреть, сможете ли вы выполнить свою задачу с помощью System.Web.UI.Adapters.ControlAdapter и файла браузера. Недостатком ControlAdapter является то, что он будет распространяться по всему сайту.

person Darthg8r    schedule 13.08.2009