我正在使用umbraco CMS 4.11.3版 内容嵌套母版页未加载(或显示)。 (内容标题模板未显示。) 请帮帮我。
Master.master代码:
<%@ Master Language="C#" MasterPageFile="~/umbraco/masterpages/default.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderID="ContentPlaceHolderDefault" runat="server">
<!doctype html>
<html>
<head title="Movafaqiyat" runat="server">
</head>
<body>
<form id="form1" runat="server">
<div id="MasterMaster" style="width: 100%;">
<div style="width: 100%;">
<asp:ContentPlaceHolder ID="HeaderParentContent" runat="server">
</asp:ContentPlaceHolder>
</div>
<div style="width: 100%;">
<asp:ContentPlaceHolder ID="MenuContent" runat="server">
</asp:ContentPlaceHolder>
</div>
<div style="width: 100%;">
<asp:ContentPlaceHolder ID="FooterParentContent" runat="server">
</asp:ContentPlaceHolder>
</div>
</div>
</form>
</body>
</html>
</asp:Content>
块引用 HeaderParent.master代码:
<%@ Master Language="C#" MasterPageFile="~/masterpages/Master.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderID="HeaderParentContent" runat="server">
<div id="HeaderParentMaster" style="width: 100%; border: 1px solid red;">
<div>
<asp:ContentPlaceHolder ID="HeaderContent" runat="server">
</asp:ContentPlaceHolder>
</div>
</div>
</asp:Content>
块引用 Header.master代码:
<%@ Master Language="C#" MasterPageFile="~/masterpages/HeaderParent.master" AutoEventWireup="true" %>
<asp:Content ContentPlaceHolderID="HeaderContent" runat="server">
<div style="width: 100%">
Did not show HEADER.Master IN HERE!
</div>
</asp:Content>
答案 0 :(得分:1)
是否将标题模板分配给任何内容页面?尝试将该模板用作altTemplate,看看它是否有效:
http://yoursitedomain.com/Header.aspx
的
http://yoursitedomain.com/?altTempalte=Header
如果显示内容,则可能只是您认为已分配给该模板的页面,而不是。
如果您认为它是一个错误,那么可能会提交错误报告或在我们的Umbraco上提出这个问题。
答案 1 :(得分:1)
我认为您最好创建宏来封装小块功能(如Header Content)并将它们放入Master.master模板中。而不是继承母版主页面仅用于简单渲染的母版页。
根据设计的不同,您将创建使用Header.master文件中设置的页面 - 我不认为您真的想要这样做。它会建议你创建一个名为header.aspx的内容页面 - 基于 header.Master模板 - 听起来不对。
母版页可以继承结构和设计 - 但链底部的最终模板是呈现页面的基础,包含在连接文档类型中设置的字段 - 不仅仅用于演示。
像下面这样的东西是另一种选择,并将渲染的内容(静态或动态)放在宏中 - 作为奖励,宏可以在Umbraco中缓存:
<div style="width: 100%;">
<asp:Macro ID="HeaderParentContent" runat="server" parm1="#inheritedValue"/>
</div>
如果您打算将内容模板放在header.master模板下(例如MyPageTemplate.master),那么您的设计仍然有用 - 但似乎仍然比它需要的更复杂。
答案 2 :(得分:1)
@BeaverProj和@amelvin:非常感谢你对我的回答。他们对我有用。 但我用这种方法解决了我的问题:
<form id="form1" runat="server">
<div id="MasterMaster" style="width: 100%;">
<uc1:HeaderControl runat="server" ID="HeaderControl" />
<div>
<asp:ContentPlaceHolder ID="defaultPageContent" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
DefaultPage.master代码:
<%@ Master Language="C#" MasterPageFile="~/masterpages/Menu.master" AutoEventWireup="true" %>
<%@ Register Src="~/usercontrols/DefaultControl.ascx" TagPrefix="uc1" TagName="DefaultControl" %>
<asp:Content ContentPlaceHolderID="defaultPageContent" runat="server">
<uc1:DefaultControl runat="server" ID="DefaultControl" />
</asp:Content>
应用这些更改后,我得到了我需要的东西。 现在,当我运行程序时,我看到默认页面。