预装Web部件区域的Web部件错误
-
16-10-2019 - |
题
SharePoint 2007 Enterprise,SP2。
我遇到了一个奇怪的错误(在ULS日志中发现,Google报告在消息本身上没有命中)尝试在区域中使用预加载的WebPart上传时:
该网络部分遇到了意外的错误。错误:无法正确解析标记。标记可能应在Visual Studio属性格式中,但给定的标记为XML格式。,DesignText:u003CVPCQWP:ComponentLandingCQWPn runat="server" id="CL_CQWP" />
此WebPart来自ContentByQueryWebPart类,并设置许多Web-Context敏感属性。
这是整个webpartzone,是的 - Tagprefix在页面顶部正确注册:
<WebPartPages:WebPartZone runat="server" FrameType="TitleBarOnly" ID="TopLeft" Title="Top Left">
<ZoneTemplate>
<VPCQWP:ComponentLandingCQWP runat="server" id="CL_CQWP"></VPCQWP:ComponentLandingCQWP>
</ZoneTemplate>
</WebPartPages:WebPartZone>
疯狂的部分是,如果我从区域清除此Web部分,上传页面,然后将Web部分添加到Web UI中,则可以使用,这没问题。我在这里想念什么?
解决方案
当您将Web部件直接添加到页面布局中时,该页面将由ASP.NET引擎分析为页面的一部分。这通常会给您与通过功能或onet.xml配置不同的行为 这里).
我不确定您是正常的CQWP,还是您自己滚动的,但要确保将所有有效的属性设置在控件上,就像您配置了WebPart XML一样。
要检查需要有哪些属性,请使用SharePoint Designer在页面布局中添加Web零件(OBS:只需在代码视图中复制控件,然后撤消对页面布局的更改,以免Unghost/自定义页面布局)
下面是使用SPD拖动CQWP时默认设置的示例:
<PublishingWebControls:ContentByQueryWebPart
runat="server"
NoDefaultStyle=""
ZoneID=""
FrameType="TitleBarOnly"
Dir="Default"
UseSQLDataSourcePaging="True"
AllowConnect="True"
Title="Content Query Web Part"
SuppressWebPartChrome="False"
ViewContentTypeId=""
MissingAssembly="Cannot import this Web Part."
FrameState="Normal"
ID="ContentByQueryWebPart1"
AllowRemove="True"
AllowHide="True"
AllowEdit="True"
ShowWithSampleData="False"
IsIncluded="True"
PartImageLarge=""
PartOrder="1"
PartImageSmall=""
AllowMinimize="True"
ConnectionID="00000000-0000-0000-0000-000000000000"
ExportMode="All"
IsIncludedFilter=""
GroupStyle="DefaultHeader"
HelpLink=""
SortByDirection="Desc"
IsVisible="True"
SortBy="{8c06beca-0777-48f7-91c7-6da68bc07b69}"
DataSourceID=""
AllowZoneChange="True"
HelpMode="Modeless"
ExportControlledProperties="True"
AdditionalFilterFields=""
AdditionalGroupAndSortFields=""
DetailLink=""
ItemStyle="Default"
Description="Use to display a dynamic view of content from your site on a web page"
ChromeType="TitleOnly"
PageSize="-1"
__MarkupType="vsattributemarkup"
__WebPartId="{b9de16fc-23b5-4d39-aaf7-3e42e8389548}"
WebPart="true"
Height=""
Width="">
<SampleData>
<dsQueryResponse>
<Rows>
<Row Title="Item 1" LinkUrl="http://Item1" Group="Group Header" __begincolumn="True" __begingroup="True" />
<Row Title="Item 2" LinkUrl="http://Item2" __begincolumn="False" __begingroup="False" />
<Row Title="Item 3" LinkUrl="http://Item3" __begincolumn="False" __begingroup="False" />
</Rows>
</dsQueryResponse></SampleData>
<DataFields>
</DataFields>
<Xsl>
<xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:cmswrt="http://schemas.microsoft.com/WebPart/v3/Publishing/runtime" exclude-result-prefixes="xsl cmswrt x" > <xsl:import href="/Style Library/XSL Style Sheets/Header.xsl" /> <xsl:import href="/Style Library/XSL Style Sheets/ItemStyle.xsl" /> <xsl:import href="/Style Library/XSL Style Sheets/ContentQueryMain.xsl" /> </xsl:stylesheet></Xsl>
</PublishingWebControls:ContentByQueryWebPart>
Hth Anders Rask
其他提示
我必须同意Anders的观点,如果它是您拥有子类的CQWP,则需要指定更多属性或在Web部件中设置它们(例如,在Onload/createChildControls中)。例如,您在.webpart文件中设置了哪些属性?使用Web界面添加Web部件与在Web部件区域模板中指定控件不同。当您通过WebInterface添加它时,Web部件控制描述文件(.WebPart)用于获取Web零件的默认值。
/ww