SharePoint中的嵌套母版页无法正常工作

时间:2010-01-27 05:33:55

标签: .net asp.net sharepoint sharepoint-2007 master-pages

我有一台SharePoint 2007 Server,并希望使用嵌套的母版页创建一个网站。

我创建了一个新的母版页,test.master:

<%@ Master MasterPageFile="~masterurl/default.master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="PlaceHolderMain" runat="server">
    Test123
    <b>
    <asp:ContentPlaceHolder runat="server" ID="TestPH" Visible="true" />
    </b>
</asp:Content>

然后我创建了一个新的Page,Test.aspx

<%@ Page MasterPageFile="test.master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TestPH" runat="server">
    TestChild
    <asp:Label Text="Test" runat="server" />
</asp:Content>

我使用SharePoint Designer将test.master和test.aspx上传到新创建的空白网站。

当我调用Test.aspx时,我只看到test.master中的Test123 - 它似乎忽略了占位符。 HTML输出(包括Sharepoint default.master的摘录):

<td class='ms-bodyareaframe' valign="top" height="100%">
    <A name="mainContent"></A>
    Test123
    <b>

    </b>
</td>

现在,当我进入Test.aspx并将其主页更改为default.master并将TestPH更改为PlaceHolderMain时,我正确地看到了TestChild Test,因此页面本身可以正常工作。

Master和ASPX页面都没有包含CodeBehind,因此没有对web.config进行任何更改(SafeControls ...)

我想知道我是否需要启用允许嵌套母版页的内容,或者如果SharePoint 2007像往常一样要求在它的祭坛上牺牲一只山羊......

1 个答案:

答案 0 :(得分:2)

SharePoint处理主页面令牌的方式有所不同。这是因为它们允许您从数据库加载母版页,它不必在文件系统中。您可以在此处详细了解:http://msdn.microsoft.com/en-us/library/ms476046.aspx

由于我在1.1版之后从未使用过“常规ASP.net”,所以我不知道母版页应该如何工作。
但是,我曾经做过的一次,是将default.master(生活在/ 12 / template / global)中的内容复制到一个不从任何东西继承的新文件,然后我将它包含在网站定义功能中,在onet.xml文件中引用它。 此处描述了该技术:http://statto1974.wordpress.com/2007/04/30/using-a-custom-master-page-in-a-site-definition/

编辑:但是,有several references to this being possible,例如this one