从内容页面禁用母版页中的功能

时间:2010-07-27 21:16:37

标签: c# asp.net master-pages

我的所有ASP.NET页面都有一个母版页。它适用于95%的页面...除了它还包括其他5%的页面中包含的不需要的属性。这导致应用程序问题。内容页面是否有可能以某种方式选择启用/禁用母版页中可用的功能?我能想到的一个选择是Master Page查看页面名称然后决定做什么,但从长远来看这有点笨拙......

4 个答案:

答案 0 :(得分:2)

您可以在内容页面中添加MasterType指令,这样您就可以访问母版页类......然后您可以实现以启用母版页的禁用功能...

<%@ MasterType virtualpath="~/MyMaster.master"%>

并且在您的代码中,您将可以访问Master属性作为类型化的类...

答案 1 :(得分:0)

在您的母版页中提供内容占位符:

<asp:ContentPlaceHolder ID="foo" runat="server">
    <div>Some default content</div>
</asp:ContentPlaceHolder>

在不需要默认行为的5%页面中,使用空字符串覆盖此占位符:

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="foo" />

其他95%的网页将获得共同的行为。

答案 2 :(得分:0)

您可以直接访问母版页,方法是访问页面并将其转换为母版页的类型,如下所示。这会将您耦合到母版页,但我能想到的唯一其他选项是在会话中创建密钥。

(MyMasterPage)Page.Master

答案 3 :(得分:0)

假设这些功能在母版页的asp标记中表示,您可以将其包装在ContentPlaceHolderControl中:

    <asp:ContentPlaceHolder ID="OptionalContent" runat="server">
        *** This is my optional content ***
    </asp:ContentPlaceHolder>

在此内容有效的95%页面中,您可以不在页面上包含“OptionalContent”的内容控件。对于不起作用的5%,您可以为“OptionalContent”包含一个空的内容控件:

            <asp:Content ContentPlaceHolderID="OptionalContent" runat="server"></asp:Content>