0

ASP.NETを介してレンダリングされたマークアップの要素に対して「name」属性がどのように機能するかを理解しようとしています

つまり<select id="lblxyz" name="ctl00$c$ctl341$lblxyz">

ctl00とは何 cですかctl1341

を作成しWebControl、それに任意のIDを指定してから、ButtonそのControlsコレクション内に配置すると、name属性はコンテナーのIDを反映していないように見えますか?

4

4 に答える 4

2

あなたが発見した重要なことは、すべてのコントロールがこの動作をトリガーするわけではないということです。重要なのはINamingContainerインターフェースです。これまで見てきたように、ネーミングコンテナのみがコントロールの名前に影響しますが、他のコントロールは影響しません。

上にリンクされているMSDNページは、それを非常によく示しています。そのインターフェイスは、「Pageオブジェクトのコントロール階層内に新しいID名前空間を作成するコンテナコントロールを識別します」。

于 2012-07-18T13:40:30.213 に答える
1

生成されるname属性は通常、常にで始まりctl00、残りはコントロールがコントロール階層のどこにあるかに基づいて生成されます。インターフェイスを実装する親コントロールはINamingContainer、子コントロール用に生成された名前に影響します。

于 2012-07-18T13:42:42.520 に答える
1

これはあなたにとって興味深いかもしれません、それは生成されるID /名前を概説します:http ://www.mostlylucid.net/archive/2008/11/03/way-too-much-information-on-control-ids-および-asp.net-4.0.aspx

于 2012-07-18T13:45:38.553 に答える
0

新しいClientIDModeを使用して、クライアントIDの表示方法を制御できます。

ASP.NET4のクライアントIDモードに関するすべて

于 2012-07-18T13:41:12.520 に答える