Вложенный MasterPage в SharePoint не работает - PullRequest
0 голосов
/ 27 января 2010

У меня есть сервер SharePoint 2007 и я хочу создать сайт с вложенной главной страницей.

Я создал новую мастер-страницу, 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>

Затем я создал новую страницу, Test.aspx

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

Я загрузил test.master и test.aspx на новый пустой сайт с помощью SharePoint Designer.

Когда я вызываю Test.aspx, я вижу только Test123 из test.master - кажется, он игнорирует заполнитель. Вывод 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 Ответ

2 голосов
/ 27 января 2010

Есть что-то в том, как SharePoint обрабатывает маркер главной страницы. Это потому, что они позволяют загружать главную страницу из базы данных, она не обязательно должна быть в файловой системе. Подробнее об этом вы можете прочитать здесь: http://msdn.microsoft.com/en-us/library/ms476046.aspx

Поскольку я никогда не работал с "обычным ASP.net" после версии 1.1, я понятия не имею, как ДОЛЖНЫ работать главные страницы.
Но то, что я делал однажды, копирует содержимое default.master (живет в / 12 / template / global) в новый файл, который ничего не наследует, затем я включил его в функцию определения сайта и сослался на это в файле onet.xml. Техника описана здесь: http://statto1974.wordpress.com/2007/04/30/using-a-custom-master-page-in-a-site-definition/

РЕДАКТИРОВАТЬ: Однако есть несколько ссылок на это возможно , например, этот .

...