【问题标题】:Access control in masterpage from nested masterpage in markup来自标记中嵌套母版页的母版页中的访问控制
【发布时间】:2012-02-07 12:55:56
【问题描述】:

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

在我的 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>

像这样 -> "filter$weekCbx" 引用 Standard.master 中的内容占位符在嵌套页面中不起作用。错误是:在 ControlParameter 'weeks' 中找不到控件 'filter$weekCbx'。使用“filter$filter$weekCbx”不起作用。

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

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

【问题讨论】:

  • 我讨厌这种情况,但它现在确实有效。我不确定首先缺少什么。但我现在可以做 filter$filter$weekCbx 了。我不喜欢它的外观,但如果我不这样做,我需要使用很多 FindControls。而且我没有看到嵌套母版页的替代方案。

标签: asp.net nested master-pages contentplaceholder


【解决方案1】:

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

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

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多