SharePoint 2010 с использованием minimal.master - PullRequest
1 голос
/ 04 апреля 2011

Я следовал этому туториалу http://msdn.microsoft.com/en-us/library/ff394517.aspx, чтобы создать ECB для SharePoint 2010, который открывает страницу aspz.По умолчанию на странице aspx используется default.master.Я хочу использовать minimal.master.Изменение следующей строки.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ConvertStatus.aspx.cs" Inherits="Proj.Layouts.Proj.ConvertStatus" DynamicMasterPageFile="~masterurl/default.master" %>

на

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ConvertStatus.aspx.cs" Inherits="Proj.Layouts.Proj.ConvertStatus" DynamicMasterPageFile="/_catalogs/masterpage/minimal.master" %>

приводит к тому, что я получаю следующую ошибку:

Ошибка сервера в «/» приложении.

Единственный код, который у меня есть в моем файле:

<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
    <p>test</p>
</asp:Content>

Могу ли я использовать minimal.master?

Обновление

В элементе управления контентом должно быть указано, что PlaceHolderMain не PlaceHolderMain2

При отключенном режиме ошибки Custome появляется следующая ошибка:

Server Error in '/' Application.
--------------------------------------------------------------------------------

Parser Error 
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: The referenced file '/_catalogs/masterpage/minimal.master' is not allowed on this page.

Source Error: 


Line 6:  <%@ Import Namespace="Microsoft.SharePoint" %>
Line 7:  <%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
Line 8:  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ConvertStatus.aspx.cs" Inherits="MyProj.Layouts.MyProj.ConvertStatus" MasterPageFile="/_catalogs/masterpage/minimal.master" %>
Line 9:  
Line 10: <asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">


Source File: /_layouts/MyProj/ConvertStatus.aspx    Line: 8 

** Обновление 2 **

Строка кода, содержащая мастер-страницу, теперь выглядит следующим образом:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ConvertStatus.aspx.cs" Inherits="Myproj.Layouts.MyProj.ConvertStatus" DynamicMasterPageFile="~masterurl/minimal.master" %>

Это теперь приводит к следующей ошибке, но должно означать, что я нажимаю на мастер-страницу

Server Error in '/' Application.
--------------------------------------------------------------------------------

Content controls are allowed only in content page that references a master page. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Web.HttpException: Content controls are allowed only in content page that references a master page.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[HttpException (0x80004005): Content controls are allowed only in content page that references a master page.]
   System.Web.UI.MasterPage.CreateMaster(TemplateControl owner, HttpContext context, VirtualPath masterPageFile, IDictionary contentTemplateCollection) +11010974
   System.Web.UI.Page.get_Master() +69
   System.Web.UI.Page.ApplyMasterPage() +18
   System.Web.UI.Page.PerformPreInit() +58
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1256

1 Ответ

2 голосов
/ 05 апреля 2011

Используемые ContentPlaceHolderID должны присутствовать на главной странице.

Минимальная главная страница содержит:

<asp:ContentPlaceHolder id="PlaceHolderPageTitle" runat="server"/>
<asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server"/>
<asp:ContentPlaceHolder ID="SPNavigation" runat="server">
<asp:ContentPlaceHolder id="PlaceHolderHelpButton" runat="server">
<asp:ContentPlaceHolder id="PlaceHolderWelcomeMenu" runat="server">
<asp:ContentPlaceHolder id="PlaceHolderDeveloperDashboardLauncher" runat="server">
<asp:ContentPlaceHolder id="PlaceHolderSiteName" runat="server">
<asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderPageSubTitle" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderTitleBreadcrumb" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderMain" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderNavSpacer" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderBodyLeftBorder" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderPageImage" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderTitleLeftBorder" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderTitleAreaClass" runat="server" />
<asp:ContentPlaceHolder id="PlaceHolderTitleAreaSeparator" runat="server" />

То есть PlaceHolderMain2 не будет работать (если вы не добавите его на главную страницу)

...