Static ClientIDModeID
は、HTML で制御することを目的としています。ただし、慎重に使用する必要があります。ページ内のコントロール ID の一意性は保証されません。
<asp:LinkButton ID="lnkDistributors" ClientIDMode="Static"
runat="server" Text="Distributors"> </asp:LinkButton>
コントロールの ClientIDMode が に設定されている場合AutoID
、コントロールの ID には一意にするためのプレフィックスが付きます。(例: ID が「sam」のコントロールは「ct100_sam」になります)。コントロールの ClientIDMode が に設定されている場合Static
、ID は変更されず、開発者が設定したもののままになります。
MSDN
ASP.NET には、ClientID プロパティ値を生成するための複数のアルゴリズムが用意されています。ClientIDMode プロパティを設定して、コントロールに使用するアルゴリズムを選択します。アルゴリズムは、次の一覧に記載されている ClientIDMode 列挙値によって識別されます。
AutoID
ClientID 値は、各親名前付けコンテナーの ID 値をコントロールの ID 値と連結することによって生成されます。コントロールの複数のインスタンスがレンダリングされるデータ バインディングのシナリオでは、増分値がコントロールの ID 値の前に挿入されます。各セグメントはアンダースコア文字 (_) で区切られます。このアルゴリズムは、ASP.NET 4 より前のバージョンの ASP.NET で使用されていました。
静的
ClientID 値は、ID プロパティの値に設定されます。コントロールが名前付けコンテナーである場合、そのコントロールは、それに含まれるすべてのコントロールの名前付けコンテナーの階層の最上位として使用されます。
予測可能な
このアルゴリズムは、データ バインド コントロール内のコントロールに使用されます。ClientID 値は、親ネーミング コンテナーの ClientID 値をコントロールの ID 値と連結することによって生成されます。コントロールが複数の行を生成するデータ バインド コントロールの場合、ClientIDRowSuffix プロパティで指定されたデータ フィールドの値が最後に追加されます。GridView コントロールの場合、複数のデータ フィールドを指定できます。ClientIDRowSuffix プロパティが空白の場合、データ フィールド値の代わりに連番が末尾に追加されます。この数値はゼロから始まり、行ごとに 1 ずつ増加します。各セグメントはアンダースコア文字 (_) で区切られます。
継承する
コントロールは、その NamingContainer コントロールの ClientIDMode 設定を継承します。ページの ClientIDMode のデフォルト値は Predictable です。コントロールの ClientIDMode のデフォルト値は Inherit です。コントロールのデフォルトは継承であるため、デフォルトの生成モードは予測可能です。(ただし、Visual Studio を使用して Web プロジェクトを以前のバージョンから ASP.NET 4 に変換すると、Visual Studio は Web.config ファイルでサイトの既定値を AutoID に自動的に設定します)。