次の方法で共有


Control.ClientID プロパティ

定義

ASP.NET によって生成される HTML マークアップのコントロール ID を取得します。

public:
 virtual property System::String ^ ClientID { System::String ^ get(); };
[System.ComponentModel.Browsable(false)]
public virtual string ClientID { get; }
[<System.ComponentModel.Browsable(false)>]
member this.ClientID : string
Public Overridable ReadOnly Property ClientID As String

プロパティ値

ASP.NET によって生成される HTML マークアップのコントロール ID。

属性

次の例は、マスター ページのコンテンツ ページ内にある Web ユーザー コントロールを示しています。 ユーザー コントロールには、 DropDownList コントロールと コントロールが Label 含まれています。 コントロールに Label 表示されるテキストは、ユーザーがコントロールから DropDownList 選択した値によって決まります。 この値を設定するために Web ページがサーバーにポストバックする必要がないように、テキスト値はクライアント スクリプトによって設定されます。 クライアント スクリプトでコントロールに対してレンダリングされる HTML 要素への参照を Label 取得するには、コントロール ClientID の プロパティの値を知っている必要があります。 ただし、ユーザー コントロールは Web ページ内の任意の場所に配置できるため、コントロールを含む名前付けコンテナーを事前に把握することはできません。 値が 値とClientIDID同じになるように、コードは 値を ClientIDModeStatic設定します。

次の例は、ユーザー コントロールを示しています。

<%@ Control AutoEventWireup="true" %>

<script type="text/javascript">
  var seasonalSports = new Array("None selected",
                                 "Tennis",
                                 "Volleyball",
                                 "Baseball",
                                 "Skiing");

  function DisplaySport(x) {
      document.getElementById("SelectedSport").innerHTML
      = seasonalSports[x];
  }    
</script>

<asp:DropDownList ID="DropDownList1" runat="server" 
                  onchange="DisplaySport(this.selectedIndex);">
  <asp:ListItem Value="Select a season"></asp:ListItem>
  <asp:ListItem Value="Spring"></asp:ListItem>
  <asp:ListItem Value="Summer"></asp:ListItem>
  <asp:ListItem Value="Autumn"></asp:ListItem>
  <asp:ListItem Value="Winter"></asp:ListItem>
</asp:DropDownList>
<br />
<asp:Label ID="SelectedSport" runat="server" ClientIDMode="Static">
</asp:Label>

次の例は、ユーザー コントロールを含むコンテンツ ページを示しています。

<%@ Page Title="" MasterPageFile="~/Seasons.master" AutoEventWireup="true" %>

<%@ Register Src="Seasons.ascx" TagName="Seasons" TagPrefix="uc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
  <uc1:Seasons ID="Seasons1" runat="server" />
</asp:Content>

次の例は、コンテンツ ページを含むマスター ページを示しています。

<%@ Master AutoEventWireup="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
        
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>

注釈

Web サーバー コントロールが HTML 要素としてレンダリングされる場合、 id HTML 要素の 属性は プロパティの ClientID 値に設定されます。 値は ClientID 、多くの場合、 メソッドを使用してクライアント スクリプトの HTML 要素にアクセスするために使用されます document.getElementById 。 ID は、スタイルを設定する要素を指定するために CSS ルールでもよく使用されます。 たとえば、次の CSS スタイル 規則では、 の属性値ProductIDLabelを持つすべてのspan要素がid選択され、その属性が background-colorwhite設定されます。

span#ProductIDLabel { background-color: white; }

ASP.NET には、プロパティ値を生成する方法に関する複数のアルゴリズムが ClientID 用意されています。 コントロールに使用するアルゴリズムを選択するには、そのプロパティを ClientIDMode 設定します。 アルゴリズムは、次の表に ClientIDMode 示す列挙値によって識別されます。

説明
AutoID ClientID 値は、それぞれの親名前付けコンテナーの ID 値とコントロールの ID 値を連結することにより生成されます。 コントロールの複数のインスタンスが表示されるデータ バインディング シナリオでは、コントロールの ID 値の前にインクリメント値が挿入されます。 各セグメントはアンダースコア文字 (_) で区切られます。 このアルゴリズムは、ASP.NET 4 より前のバージョンの ASP.NET で使用されました。
Static ClientID 値は、ID プロパティの値に設定されます。 コントロールが名前付けコンテナーの場合、そのコントロールは、名前付けコンテナーの階層構造に含まれるすべてのコントロールに対して最上位の階層として使用されます。
Predictable このアルゴリズムは、データ バインド コントロール内のコントロールに対して使用されます。 ClientID 値は、親名前付けコンテナーの ClientID 値とコントロールの ID 値を連結することにより生成されます。 コントロールが複数の行を生成するデータ バインド コントロールである場合は、ClientIDRowSuffix プロパティで指定されたデータ フィールドの値が末尾に追加されます。 GridView コントロールの場合は、複数のデータ フィールドを指定できます。 プロパティが ClientIDRowSuffix 空白の場合は、データ フィールド値ではなく、末尾に連続する数値が追加されます。 各セグメントはアンダースコア文字 (_) で区切られます。
Inherit コントロールは、ClientIDMode コントロールの NamingContainer 設定を継承します。

ページの ClientIDMode 既定値は です Predictable。 コントロールの ClientIDMode 既定値は です Inherit。 コントロールの既定値は Inheritであるため、既定の生成モードは です Predictable。 (ただし、Visual Studio を使用して Web プロジェクトを以前のバージョンから ASP.NET 4 に変換する場合、Visual Studio では、Web.config ファイルでサイトの既定値が 自動的に に AutoID 設定されます)。

詳細については、ASP.NET Web サーバー コントロールの識別に関する記事をご覧ください。

適用対象

こちらもご覧ください