2009-08-13 3 views
0

XHTML 1.0 Strict를 준수하려고 시도한 사이트가 있습니다. doctype이 그에 따라 선언 된 나는 다음과의 Web.config 설정 한 :ASP.NET BulletedList는 XHTML 1.0과 호환되지 않는 항목을 비활성화했습니다. 엄격한 DOCTYPE

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

내 문제는 지금 여기에있다. DisplayMode가 BulletedListDisplayMode.HyperLink로 설정된 BulletedList 서버 컨트롤이 있습니다.

이 컨트롤은 web.sitemap xml 파일의 항목으로 채워지며,이 중 첫 번째 항목은 비활성화되어 있습니다 (코드 숨김에서 false로 설정). 결과적으로 속성이 비활성화 된 앵커 태그가 출력됩니다. 그러나 이는 준수하지 않습니다.

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

내가 이것을 W3 유효성 검사기에 대해 검증하면이 때문에 실패합니다. 이게 버그 야? set xhtml과의 일치를 감안할 때 앵커 태그가 전혀 렌더링되지 않았을 것으로 예상됩니다.

단순히 목록의 첫 번째 항목을 사용하지 않는 링크가 아닌 일반 텍스트로 표시하려고합니다. 어떤 제안?

답변

0

항상 BulletedList 컨트롤을 확장하고 해당 부분을 적절하게 다시 구현할 수 있습니다.

+0

불행히도, 어떻게해야할지 모르겠습니다. 예제를 제공해 줄 수 있습니까? –

+0

나는 내 머리 꼭대기에서 잘 모르겠다. Reflector를 사용하여 해당 클래스의 소스를 확인하고 해당 유형의 렌더링을 확인한 다음 다시 구현하여 기본 클래스에서 자신의 방식대로 수행합니다. –

0

문제는 정말로 버튼과 같은 입력 요소에 대해서만 앵커 태그에 disabled 속성을 적용해서는 안된다는 것입니다.

"first?"라는 목록 항목 내의 앵커 태그에 CSS 스타일을 수정 해 보았습니까?

+0

클릭 할 수 있습니다. –

+0

예, 이전에 그렇게 좋아했지만 이전에 클릭 할 수 있었기 때문에 이것을 시도하고 유효성 검사기가 실패한 것으로 나타났습니다. –

0

나는 침대로 향하고 있지만이 지점에서 저격하여 가능한 출발점을 제공 할 것입니다.

위와 같이 Silky라고 말하고 OnRender를 재정의하거나 System.Web.UI.Adapters.ControlAdapter 및 브라우저 파일을 사용하여 작업을 수행 할 수 있는지 확인할 수 있습니다. ControlAdapter의 단점은 사이트 전체에 적용된다는 것입니다.

관련 문제