zukucode
主にWEB関連の情報を技術メモとして発信しています。

ASP.NET Labelコントロールでhtmlのlabel forのように指定する

ラベルをクリックした時に関連するチェックボックスやラジオボタンが反応するように、htmllabelにはforの属性が用意されています。

<input type="checkbox" id="checkbox1">
<label for="checkbox1">選択</label>

ASP.NETで同様のことを行う場合は注意が必要です。

IDが変更されてしまう

マスタページやユーザコントロールを使用している場合、IDは変更されてしまうため、以下のようにしてもうまくいきません。

<input type="checkbox" id="checkbox1" runat="server">
<label for="checkbox1">選択</label>

チェックボックスのID(checkbox1)は変更されますが、ラベルのforで指定したcheckbox1はそのままになってしまいます。

Webコントロールを使用する

htmlのコントロールではなく、以下のようにWebコントロールを使用します。

<asp:CheckBox ID="checkbox1" runat="server">
<asp:Label AssociatedControlID="checkbox1" Text="選択"></asp:Label>

AssociatedControlIDhtmlのコントロールのforに相当します。

実際にレスポンスされるcheckbox1IDと同じ値をforに指定されます。

CheckBoxのプロパティで設定する

CheckBoxのWebコントロールにはTextのプロパティが用意されています。

なので以下のように指定しても同じようにfor属性の付いたlabelがレスポンスされます。

<asp:CheckBox ID="checkbox1" runat="server" Text="選択">

関連記事