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