2009-08-13 9 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

実際には、無効な属性をアンカータグに適用しないでください。ボタンのような入力要素のほんの一部にしか適用できません。

クラス「first?」を持つリストアイテム内のアンカータグのCSSスタイルを変更しようとしましたか?

+0

まだクリック可能です。 –

+0

はい、それ以前はそれが好きでしたが、それでもクリック可能だったので、これを試してみました。 –

0

私はベッドに向かいますが、私はあなたに可能な出発点を与えるためにこの場所に狙いを定めます。

上記のようにSilkyと言うことができ、OnRenderをオーバーライドするか、System.Web.UI.Adapters.ControlAdapterとブラウザファイルを使用してタスクを実行できるかどうかを確認できます。 ControlAdapterの欠点は、サイト全体に広がることです。

関連する問題