ASP.NET Labelコントロールでhtmlのlabel forのように指定する
ラベルをクリックした時に関連するチェックボックスやラジオボタンが反応するように、htmlのlabelには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>AssociatedControlIDがhtmlのコントロールのforに相当します。
実際にレスポンスされるcheckbox1のIDと同じ値をforに指定されます。
CheckBoxのプロパティで設定する
CheckBoxのWebコントロールにはTextのプロパティが用意されています。
なので以下のように指定しても同じようにfor属性の付いたlabelがレスポンスされます。
<asp:CheckBox ID="checkbox1" runat="server" Text="選択">