SharePoint PageLayout Fehler – Content-Control ist case-sensitive

Heute stieß ich auf ein unangenehmes Verhalten von SharePoint als ich mir ein PageLayout gebaut habe. Das Problem war, dass mir nach dem initialen Deployen des PageLayouts eine unschöne Fehlermeldung beim direkten Betrachten der aspx-Seite im Browser angezeigt wurde.

Parserfehler
Beschreibung: Fehler beim Verarbeiten einer Resource, die für diese Anforderung erforderlich ist. Überprüfen Sie folgende Fehlerinformationen und ändern Sie die Quelldatei entsprechend.
Parserfehlermeldung: Auf einer Inhaltsseite, die Content-Steuerelemente enthält, sind direkt nur Content-Steuerelemente zulässig.

Fehlermeldung im PageLayout

Fehlermeldung im PageLayout

Normalerweise fange ich immer mit einem minimalen PageLayout an, dass ich dann im SharePoint Designer oder Sublime Text 2 (per WebDAV) anpasse und das mir einfach den Titel der Seite ausgibt. In diesem Layout benutze ich die üblichen Content-Controls zum Überschreiben der Placeholder PlaceHolderPageTitle, PlaceHolderAdditionalPageHead und PlaceHolderMain. Doch diesmal funktionierte das überhaupt nicht.

Also habe ich die Seite mit dem SharePoint Designer geöffnet.
Und siehe da, im PageLayout steht ab Zeile 14 sehr komisches Zeug …

<%@ Page Language="C#" Inherits="Microsoft.SharePoint.Publishing.PublishingLayoutPage,Microsoft.SharePoint.Publishing,Version=14.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="SharePointWebControls" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="PublishingWebControls" Namespace="Microsoft.SharePoint.Publishing.WebControls" Assembly="Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="PublishingNavigation" Namespace="Microsoft.SharePoint.Publishing.Navigation" Assembly="Microsoft.SharePoint.Publishing, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<asp:content contentplaceholderid="PlaceHolderPageTitle" runat="server">
	<SharePointWebControls:FieldValue id="PageTitle" FieldName="Title" runat="server"/>
</asp:content>
<asp:content contentplaceholderid="PlaceHolderAdditionalPageHead" runat="server">
</asp:content>
<asp:content contentplaceholderid="PlaceHolderMain" runat="server">
	<SharePointWebControls:FieldValue id="PageTitle2" FieldName="Title" runat="server"/>
</asp:content>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %><html xmlns:mso="urn:schemas-microsoft-com:office:office" xmlns:msdt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"><head><meta name="WebPartPageExpansion" content="full" /><!--[if gte mso 9]><xml>
<mso:CustomDocumentProperties>
<mso:ContentType msdt:dt="string">Seitenlayout</mso:ContentType>
<mso:PublishingAssociatedContentType msdt:dt="string">;#MeinPageLayout;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F2007948130EC3DB064584E219954237AF39002327829F853940F90001A6F6C78AEC27;#</mso:PublishingAssociatedContentType>
</mso:CustomDocumentProperties>
</xml><![endif]--><title>MeinPageLayout</title></head>
Komisches PageLayout

Komisches PageLayout

Als ich das Problem genauer sah, kam es mir bekannt vor. Ich konnte mich aber nicht mehr daran erinnern was die Lösung war. Also musste Google her :).
Nach ein bisschen googlen war die Lösung dann aber schnell gefunden!
Clinton Cherry hat in seinem Blog schon 2007 darüber geschrieben http://clintoncherry.wordpress.com/2007/10/03/weird-content-controls-error-in-custom-sharepoint-page-layouts.

Das Problem ist das Content-Control, das ich mit kleinem c deklariert habe…
Es ist für SharePoint PageLayouts sehr wichtig, dass das C in <asp:Content> groß geschrieben wird!

Falsch:

<asp:content contentplaceholderid="PlaceHolderMain" runat="server">
	<SharePointWebControls:FieldValue id="PageTitle2" FieldName="Title" runat="server"/>
</asp:content>

Richtig:

<asp:Content contentplaceholderid="PlaceHolderMain" runat="server">
	<SharePointWebControls:FieldValue id="PageTitle2" FieldName="Title" runat="server"/>
</asp:Content>

Also habe ich alles angepasst und deployt.
Und schon lief alles wieder wie gewohnt :D.

Minimales PageLayout

Minimales PageLayout

Ich hoffe dieser Schnitzer wird mir so schnell nicht nochmal passieren. 🙂

2.200 Kommentare

  1. You have made some good points there. I checked on the net for more information about the issue and found most people will go along with your views on this site.

  2. Hello there, I think your blog could possibly be having web browser compatibility issues. Whenever I take a look at your web site in Safari, it looks fine however, when opening in Internet Explorer, it has some overlapping issues. I just wanted to provide you with a quick heads up! Besides that, excellent blog!

  3. Iím amazed, I have to admit. Seldom do I come across a blog thatís equally educative and entertaining, and let me tell you, you’ve hit the nail on the head. The problem is something that not enough men and women are speaking intelligently about. I am very happy that I came across this in my search for something regarding this.

  4. Aw, this was an incredibly nice post. Taking a few minutes and actual effort to make a superb articleÖ but what can I sayÖ I procrastinate a whole lot and don’t seem to get anything done.

  5. Howdy, I do think your web site may be having browser compatibility problems. Whenever I look at your site in Safari, it looks fine however, when opening in IE, it’s got some overlapping issues. I merely wanted to provide you with a quick heads up! Other than that, fantastic site!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.