S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

UIコントロールの取得

マスターページを利用したページのUIコントロールを取得する場合、コードビハインドからPage.FindControlやPage.Form.FindControlでUIコントロールの取得が取得できない。
例えば、マスターページとコンテンツ領域を下記のように記述した場合、ContentPlaceHolderのUIコントロールから取得するようになる。
イメージ的にはDOMの構造を辿れって感じっぽい。
【マスターページ】

<form id="form_1" runat="server">
  <asp:ContentPlaceHolder ID="ContentPlaceHolder_1" runat="server">
    <!-- コンテンツの領域 -->
  </asp:ContentPlaceHolder>
 <asp:HiddenField runat="server" ID="txt_hid_FUGA" Value="0" />
</form>

【コンテンツ領域】

<asp:HiddenField runat="server" ID="txt_hid_HOGE" Value="0" />

コンテンツ領域のtxt_hid_HOGEのUIコントロールを取得する場合は、下記のように取得する。

Page.Form.FindControl("ContentPlaceHolder_1").FindControl("txt_hid_HOGE")

ちなみにマスターページに記述したUIコントロールを取得する場合は、下記のような記述もできる。

Page.Master.Form.FindControl("txt_hid_FUGA")