2つのマスターページがあります。1つは「ベース」マスターページで、もう1つはネストされたマスターページです。
asp.net Webアプリのサブフォルダーで、ネストされたマスターページは、-> MasterPageFile = "〜/ Standard.Master"を宣言することにより、メインの「Standard.Master」を参照しています。
ネストされたマスターページを使用して表示されるページの特定のコンテンツをホストするために、base-Masterpageによって定義されたプレースホルダー内のchild-contentplaceholdersを使用しています。
例:
<asp:Content ContentPlaceHolderID="filter" runat="server">
<asp:ContentPlaceHolder runat="server" ID="filter"></asp:ContentPlaceHolder>
</asp:Content>
<asp:Content ContentPlaceHolderID="ContentPlaceHolderMain" runat="server">
<asp:ContentPlaceHolder runat="server" ID="ContentPlaceHolderMain">
</asp:ContentPlaceHolder>
コンテンツプレースホルダー「フィルター」はStandard.Masterで定義されており、現在のページのパラメーターを選択するためのドロップダウンまたはその他のコントロールが含まれています。例を次に示します。
<asp:Content ContentPlaceHolderID="filter" runat="server">
<asp:CheckBox ID="weekCbx" runat="server" AutoPostBack="false" />
私はこれらのフィルターを次のように参照する多くのobjectdatasourcesを持っています:
<asp:ObjectDataSource ID="myDatasource" runat="server" TypeName="BusinessLogic.MyType"
SelectMethod="GetData"
<SelectParameters>
<asp:ControlParameter ControlID="filter$weekCbx" Name="weeks" PropertyName="Checked" />
</SelectParameters>
</asp:ObjectDataSource>
このようにStandard.masterのcontentplaceholderを参照する->「filter$weekCbx」はネストされたページでは機能しません。エラーは次のとおりです。ControlParameter'weeks'にcontrol'filter$weekCbx'が見つかりませんでした。「filter$filter$weekCbx」の使用は機能しませんでした。
ネストされたページからStandard.Masterの「filter」プレースホルダー内のコントロールにアクセスするにはどうすればよいですか?
コードビハインドに移動する必要がある場合は、FindControlを使用して毎回5〜10個のフィルターにアクセスする必要があります。それは避けたいと思います。