1

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個のフィルターにアクセスする必要があります。それは避けたいと思います。

4

1 に答える 1

0

強い型のマスターページを使用してこれを達成できます。ここここに情報があります。

私はあなたがあなたのデザインを再考することを提案します、あなたがこれをしていることに気づいたらあなたがそこで変えることができるいくつかのことかもしれません。

幸運を!

于 2012-02-07T13:56:19.307 に答える