1

我有两个母版页,一个是“基础”母版页,另一个是嵌套的母版页。

在我的 asp.net Web 应用程序的子文件夹中,嵌套母版页通过声明 -> MasterPageFile="~/Standard.Master" 来引用主“Standard.Master”。

我在基本母版页定义的占位符内使用子内容占位符,以托管使用嵌套母版页显示的页面的特定内容。

例子:

<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" />

我有许多引用这些过滤器的对象数据源,如下所示:

<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' 中找不到控件 'filter$weekCbx'。使用“filter$filter$weekCbx”不起作用。

如何从嵌套页面访问 Standard.Master 中“过滤器”占位符内的控件?

如果我必须将它移到后面的代码中,我可能每次都必须使用 FindControl 来访问 5-10 个过滤器。我想避免这种情况。

4

1 回答 1

0

您可以使用强类型母版页来完成此操作,您可以在HereHere中找到信息。

我建议你重新考虑你的设计,如果你发现自己被困在这个地方,也许你可以改变一些事情。

祝你好运!

于 2012-02-07T13:56:19.307 回答