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="選択">