2011-01-03 8 views
0

XHTMLのdoctypeに関するサイトコードと、フレームワークがASP.netであることを見ています。 HTMLのIDには「$」が入ります。例えば

<img id="$ct100templateContent$SectionPanel1$ctl01$ctl02ctl00_templateContent_SectionPanel1_ctl01_ct999img" src="this.jpg"/> 

ビューのW3Cセマンティック観点から「$」は、IDまたはクラスには有効ではありません。 IDとクラスは、XHTMLのdoctypeに英数字のみを含むことができます。

"$"というASP.net命名規則は、Webコントロールまたはテンプレート項目を参照していますか?

+2

図を参照すると、MSは標準のすべてをうまく使います。 –

答えて

1

私はちょっと混乱しています。ドル記号は、のID:で表示されています。

Webコントロールをマークアップにレンダリングするとき、ASP.NETは、WebコントロールのIDプロパティとコントロール階層内のその場所に基づいて、要素のidとの属性を生成します。要するに、テンプレートコントロールや反復コントロールなどの特定のコントロールは、という名前のコンテナとして動作します。このようなコントロールのIDプロパティ値は、idnameの属性を決定するときに、内部コントロールのIDプロパティ値の先頭に置かれます。ここで、マスターページ(ctl00)とのContentPlaceHolder(MainContent)コントロールが命名されているコンテナを

Sample ASP.NET control hierarchy.

はたとえば、以下のコントロール階層を考えます。 Age TextBox Webコントロールのレンダリングidclt00_MainContent_Age - namely, its own server-side ID property value prefixed with the IDの名前のコンテナ祖先です。

ただし、レンダリングされたidが、各ネーミングコンテナスポットをアンダースコアで区切っていることに注意してください。これはASP.NETの既定の機能です。なぜid属性でドル記号が表示されているのか疑問に思っています。 (name属性を定式化する場合、ASP.NETは各命名コンテナのスポットをドル記号で区切りますが、id属性値を定式化するときは$を使用しないでください)。

使用しているASP.NETのバージョンは?あなたは何かをしていますか...変ですか?カスタムコントロールを使用して、ベースのControlクラスのIdSeparatorプロパティをオーバーライドするのと同じですか? ASP.NET 4を使用している場合は、コントロールのClientIDModeプロパティを(意図的にまたは意図せずに)設定していますか?

+0

使用しているASP.NETのバージョンがわかりません。 IDの作成方法に関する説明から、私はASP.NET開発者がフロントエンドコードの生成に間違いを犯したと考えています。 – ectype

0

$値は、コントロールがサイト/ページに埋め込まれているレベルを表します。 ClientIDModeをStaticに変更して、独自のIDを使用することもできます。

0

はい、ASP.NETは、階層ページレイアウトに基づいてコントロールのIDを生成するときに、 '$'記号を使用します。 ASP.NETはクラス名に '$'記号を使用しません。

関連する問題