使用移轉 API 移轉網頁元件
移轉 API 支援使用 PRIME 套件將網頁元件移轉至 Microsoft 365 中的 SharePoint 的能力,方法是呼叫 CSOM/REST/SOAP WS 來取得網頁元件資料和屬性,以建置 PRIME 套件。
此方法的優點是您可以在一次呼叫中移轉網頁元件,並改善效能。 當您匯入其相關聯的頁面時,資訊清單會包含網頁元件。 當您使用移轉 API 時,可以將您擁有的所有網頁元件放在該頁面上。
使用序列化程式 DLL
使用 WebPart 使用者屬性序列化程式 DLL,以唯一的方式處理兩個屬性。
當您建置 PRIME 套件時,產生 AllUsersProperties 和 PerUserProperties 的屬性值是一項技術挑戰,因為屬性值是 BASE64 編碼的 Blob。 該 Blob 包含序列化的網頁元件屬性和網頁元件連線資訊。
若要取得序列化程式.dll,請遵循下列步驟:
- 在本機電腦上安裝 SharePoint 移轉工具 (SPMT) 客戶端。
- 流覽至 SPMT 的安裝位置。
- 找出 microsoft.sharepoint.migration.webpart.serializer.dll ,以便將它複製到您的專案。
如需支援的網頁元件完整清單,請參閱:
Schema
如需 SPWebPart 欄位的說明,請參閱 SPWebPart。
PRIME 網頁元件架構範例
<!-- SPFile definition -->
<xs:complexType name="SPFile">
<xs:sequence>
<xs:element name="Properties" type="Dictionary" minOccurs="0" />
<xs:element name="Versions" type="SPFileVersionCollection" minOccurs="0" maxOccurs="1" />
<xs:element name="WebParts" type="SPWebPartCollection" minOccurs="0" maxOccurs="1" />
<xs:element name="Links" type="SPLinkCollection" minOccurs="0" maxOccurs="1" />
<xs:element name="EventReceivers" type="SPEventReceiverDefinitionCollection" minOccurs="0" maxOccurs="1" />
<xs:element name="VersionEvents" type="SPFileVersionEventCollection" minOccurs="0" maxOccurs="1" />
</xs:sequence>
......
</xs:complexType>
<!-- SPWebPartCollection definition -->
<xs:complexType name="SPWebPartCollection">
<xs:sequence>
<xs:element name="WebPart" type="SPWebPart" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- SPWebPart definition -->
<xs:complexType name="SPWebPart">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="35">
<xs:element name="Script" minOccurs="0" maxOccurs="1" />
<xs:element name="PagedRowset" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="PagedClientCallbackRowset" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="PagedRecurrenceRowset" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ViewFields" type="SPFieldLinkCollection" minOccurs="0" maxOccurs="1" />
<xs:element name="ViewData" minOccurs="0" maxOccurs="1" />
<xs:element name="Query" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="RowLimit" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="RowLimitExceeded" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Toolbar" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Formats" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Aggregations" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="List" minOccurs="0" maxOccurs="1" />
<xs:element name="MetaData" minOccurs="0" maxOccurs="1" />
<xs:element name="View" minOccurs="0" maxOccurs="1" />
<xs:element name="ViewStyle" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ViewBody" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ViewEmpty" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ViewFooter" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ViewHeader" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="ViewBidiHeader" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="GroupByFooter" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="GroupByHeader" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="CalendarViewStyles" minOccurs="0" maxOccurs="1" />
<xs:element name="CalendarSettings" minOccurs="0" maxOccurs="1" />
<xs:element name="ListFormBody" minOccurs="0" maxOccurs="1" />
<xs:element name="Xsl" minOccurs="0" maxOccurs="1" />
<xs:element name="XslLink" minOccurs="0" maxOccurs="1" />
<xs:element name="JS" minOccurs="0" maxOccurs="1" />
<xs:element name="JSLink" minOccurs="0" maxOccurs="1" />
<xs:element name="ParameterBindings" minOccurs="0" maxOccurs="1" />
<xs:element name="OpenApplicationExtension" minOccurs="0" maxOccurs="1" />
<xs:element name="Mobile" minOccurs="0" maxOccurs="1" />
<xs:element name="MobileItemLimit" minOccurs="0" maxOccurs="1" />
<xs:element name="Method" minOccurs="0" maxOccurs="1" />
<xs:element name="WebParts" minOccurs="0" maxOccurs="1" />
<xs:element name="InlineEdit" minOccurs="0" maxOccurs="1" />
<xs:element name="Joins" minOccurs="0" maxOccurs="1" />
<xs:element name="ProjectedFields" minOccurs="0" maxOccurs="1" />
<xs:element name="SpotlightInfo" minOccurs="0" maxOccurs="1" />
<xs:element name="Visualization" minOccurs="0" maxOccurs="unbounded" />
</xs:choice>
</xs:sequence>
<xs:attribute name="Name" type="Guid" use="required" />
<xs:attribute name="ListId" type="Guid" use="optional" />
<xs:attribute name="ListRootFolderUrl" type="xs:string" use="optional" />
<xs:attribute name="Type" type="xs:string" use="optional" />
<xs:attribute name="UserId" type="xs:int" use="optional" />
<xs:attribute name="DisplayName" type="xs:string" use="optional" />
<xs:attribute name="WebPartTypeId" type="Guid" use="optional" />
<xs:attribute name="Assembly" type="xs:string" use="optional" />
<xs:attribute name="Class" type="xs:string" use="optional" />
<xs:attribute name="SolutionId" type="Guid" use="optional" />
<xs:attribute name="Version" type="xs:string" use="optional" />
<xs:attribute name="BaseViewID" type="xs:string" use="optional" />
<xs:attribute name="WebPartZoneID" type="xs:string" use="optional" />
<xs:attribute name="IsIncluded" type="xs:string" use="optional" />
<xs:attribute name="WebPartOrder" type="xs:string" use="optional" />
<xs:attribute name="FrameState" type="xs:string" use="optional" />
<xs:attribute name="Source" type="xs:string" use="optional" />
<xs:attribute name="AllUsersProperties" type="xs:string" use="optional" />
<xs:attribute name="PerUserProperties" type="xs:string" use="optional" />
<xs:attribute name="WebPartIdProperty" type="xs:string" use="optional" />
<xs:attribute name="ContentTypeId" type="xs:string" use="optional" />
<!-- For files (major [default] or minor) -->
<xs:attribute name="Level" type="xs:string" use="optional" />
<!-- Flags -->
<xs:attribute name="Flags" type="xs:string" use="optional" />
<xs:attribute name="Scope" type="xs:string" use="optional" />
<xs:attribute name="Hidden" type="xs:boolean" use="optional" />
<xs:attribute name="Threaded" type="xs:boolean" use="optional" />
<xs:attribute name="ReadOnly" type="xs:boolean" use="optional" />
<xs:attribute name="RecurrenceRowset" type="xs:boolean" use="optional" />
<xs:attribute name="FPModified" type="xs:boolean" use="optional" />
<xs:attribute name="ModerationType" type="xs:string" use="optional" />
<xs:attribute name="Personal" type="xs:boolean" use="optional" />
<xs:attribute name="OrderedView" type="xs:boolean" use="optional" />
</xs:complexType>
安全性控制項
伺服器端的安全性控制項設計可啟用下列功能:
- 如果 NoScript 關閉,請移轉所有網頁元件。
- 如果 NoScript 開啟,請先檢查網頁元件層級安全性:
- 如果 SafeAgainstScript 為 false,請勿匯入。
- 如果 SafeAgainstScript 為 true,請檢查網頁元件屬性層級安全:
- 如果此網頁元件有任何具有 RequiresDesignerPermission 的屬性,請忽略該網頁元件 (或在可行的) 時忽略此屬性。
- 否則,請移轉此網頁元件。
開啟 NoScript 時,伺服器端程式碼會忽略這些網頁元件 (視為不受信任的網頁元件) :
- XsltListViewWebPart
- ContentEditorWebPart
- ContentByQueryWebPart
- SiteFeedWebPart
- ScriptEditorWebPart
- ContactFieldControl
- SearchBoxScriptWebPart
- PageViewerWebPart
- ProfileBrowser
- UserTasksWebPart
- SocialCommentWebPart
- SilverlightWebPart
- RSSAggregatorWebPart
- SummaryLinkWebPart
- TableOfContentsWebPart
- UserDocsWebPart
- SPTimelineWebPart
- XmlWebPart
- SiteDocuments
- CategoryResultsWebPart
常見問題集
如何?擷取網頁元件屬性作為序列化 API 的輸入嗎?
Web 元件屬性可以在WebPartPagesWebService中GetWebPartProperties2作業回應的 webpart > 元素中找到 < 。 在 WSDL /_vti_bin/WebPartPage.asmx 中尋找承載詳細資料嗎?WSDL。
如何?擷取網頁元件連線資訊作為序列化 API 的輸入嗎?
Web 元件連線可以在WebPartPagesWebService中GetWebPartPage作業回應中網頁元件頁面的 SPWebPartConnection > 元素中找到 < 。
範例
範例網頁元件屬性 v2 XmlNode 元素
<WebPart xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/WebPart/v2" ID="1c845edf-42c6-4094-a105-302015642f43">
<Title>Content Editor</Title>
<FrameType>Default</FrameType>
<Description>Allows authors to enter rich text content.</Description>
<IsIncluded>true</IsIncluded>
<ZoneID>wpz</ZoneID>
<PartOrder>0</PartOrder>
<FrameState>Normal</FrameState>
<Height />
<Width />
<AllowRemove>true</AllowRemove>
<AllowZoneChange>true</AllowZoneChange>
<AllowMinimize>true</AllowMinimize>
<AllowConnect>true</AllowConnect>
<AllowEdit>true</AllowEdit>
<AllowHide>true</AllowHide>
<IsVisible>true</IsVisible>
<DetailLink />
<HelpLink />
<HelpMode>Modeless</HelpMode>
<Dir>Default</Dir>
<PartImageSmall />
<MissingAssembly></MissingAssembly>
<PartImageLarge>/_layouts/15/images/mscontl.gif</PartImageLarge>
<IsIncludedFilter />
<ExportControlledProperties>true</ExportControlledProperties>
<ConnectionID>00000000-0000-0000-0000-000000000000</ConnectionID>
<ID>g_d6def51c_7a91_40fe_9f59_de9ceed5c347</ID>
<Assembly>Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
<TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName>
<ContentLink xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor" />
<Content xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor" />
<PartStorage xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor" />
</WebPart>
範例網頁元件屬性 v3 XmlNode 元素
<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
<metaData>
<type name="Microsoft.SharePoint.WebPartPages.XsltListViewWebPart, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
<importErrorMessage></importErrorMessage>
</metaData>
<data>
<properties>
<property name="ShowWithSampleData" type="bool">False</property>
<property name="Default" type="string" />
<property name="NoDefaultStyle" type="string" />
<property name="CacheXslStorage" type="bool">True</property>
<property name="ViewContentTypeId" type="string" />
<property name="XmlDefinitionLink" type="string" />
<property name="ManualRefresh" type="bool">False</property>
<property name="ListUrl" type="string" null="true" />
<property name="ListId" type="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">a316c9a6-e664-426b-9069-77cabd22429c</property>
<property name="TitleUrl" type="string">/Lists/TestPromotedLinks</property>
<property name="EnableOriginalValue" type="bool">False</property>
<property name="Direction" type="direction">NotSet</property>
<property name="ServerRender" type="bool">False</property>
<property name=" ViewFlags " type="Microsoft.SharePoint.SPViewFlags, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">Html, TabularView, Hidden, Ordered</property>
<property name="AllowConnect" type="bool">True</property>
<property name="ListName" type="string">{A316C9A6-E664-426B-9069-77CABD22429C}</property>
<property name="ListDisplayName" type="string" null="true" />
<property name="AllowZoneChange" type="bool">True</property>
<property name="ChromeState" type="chromestate">Normal</property>
<property name="DisableSaveAsNewViewButton" type="bool">True</property>
<property name="ViewFlag" type="string" />
<property name="DataSourceID" type="string" />
<property name="ExportMode" type="exportmode">All</property>
<property name="AutoRefresh" type="bool">False</property>
<property name="FireInitialRow" type="bool">True</property>
<property name="AllowEdit" type="bool">True</property>
<property name="Description" type="string" />
<property name="HelpMode" type="helpmode">Modeless</property>
<property name="BaseXsltHashKey" type="string" null="true" />
<property name="AllowMinimize" type="bool">True</property>
<property name="CacheXslTimeOut" type="int">86400</property>
<property name="ChromeType" type="chrometype">Default</property>
<property name="Xsl" type="string" null="true" />
<property name="JSLink" type="string" null="true" />
<property name="CatalogIconImageUrl" type="string">/_layouts/15/images/itgen.png?rev=23</property>
<property name="SampleData" type="string" null="true" />
<property name="UseSQLDataSourcePaging" type="bool">True</property>
<property name="TitleIconImageUrl" type="string" />
<property name="PageSize" type="int">-1</property>
<property name="ShowTimelineIfAvailable" type="bool">True</property>
<property name="Width" type="string" />
<property name="DataFields" type="string" />
<property name="Hidden" type="bool">False</property>
<property name="Title" type="string" />
<property name="PageType" type="Microsoft.SharePoint.PAGETYPE, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">PAGE_NORMALVIEW</property>
<property name="DataSourcesString" type="string" />
<property name="AllowClose" type="bool">True</property>
<property name="InplaceSearchEnabled" type="bool">False</property>
<property name="WebId" type="System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">00000000-0000-0000-0000-000000000000</property>
<property name="Height" type="string" />
<property name="GhostedXslLink" type="string">main.xsl</property>
<property name="DisableViewSelectorMenu" type="bool">True</property>
<property name="DisplayName" type="string" />
<property name="IsClientRender" type="bool">False</property>
<property name="XmlDefinition" type="string"><View Name="{2B37E456-6FD3-4708-AC83-5D7B0D13E9B4}" Type="HTML" Hidden="TRUE" OrderedView="TRUE" DisplayName="" Url="/SitePages/TestPage.aspx" Level="1" BaseViewID="3" ContentTypeID="0x" ><Query><OrderBy><FieldRef Name="TileOrder" Ascending="TRUE"/><FieldRef Name="Modified" Ascending="FALSE"/></OrderBy></Query><ViewFields><FieldRef Name="Title"/><FieldRef Name="BackgroundImageLocation"/><FieldRef Name="Description"/><FieldRef Name="LinkLocation"/><FieldRef Name="LaunchBehavior"/><FieldRef Name="TileOrder"/></ViewFields><RowLimit Paged="TRUE">30</RowLimit><JSLink>clienttemplates.js</JSLink><XslLink Default="TRUE">main.xsl</XslLink><Toolbar Type="Standard"/></View></property>
<property name="InitialAsyncDataFetch" type="bool">False</property>
<property name="AllowHide" type="bool">True</property>
<property name="ParameterBindings" type="string"><ParameterBinding Name="dvt_sortdir" Location="Postback;Connection" /><ParameterBinding Name="dvt_sortfield" Location="Postback;Connection" /><ParameterBinding Name="dvt_startposition" Location="Postback" DefaultValue="" /><ParameterBinding Name="dvt_firstrow" Location="Postback;Connection" /><ParameterBinding Name="OpenMenuKeyAccessible" Location="Resource(wss,OpenMenuKeyAccessible)" /><ParameterBinding Name="open_menu" Location="Resource(wss,open_menu)" /><ParameterBinding Name="select_deselect_all" Location="Resource(wss,select_deselect_all)" /><ParameterBinding Name="idPresEnabled" Location="Resource(wss,idPresEnabled)" /><ParameterBinding Name="NoAnnouncements" Location="Resource(wss,noXinviewofY_LIST)" /><ParameterBinding Name="NoAnnouncementsHowTo" Location="Resource(wss,noXinviewofY_DEFAULT)" /></property>
<property name="DataSourceMode" type="Microsoft.SharePoint.WebControls.SPDataSourceMode, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c">List</property>
<property name="AutoRefreshInterval" type="int">60</property>
<property name="AsyncRefresh" type="bool">False</property>
<property name="HelpUrl" type="string" />
<property name="MissingAssembly" type="string">Cannot import this Web Part.</property>
<property name="XslLink" type="string" null="true" />
<property name="SelectParameters" type="string" />
</properties>
</data>
</webPart>
範例網頁元件連線 XmlNode 元素
<WebPartPages:SPWebPartConnection ConsumerConnectionPointID="DFWP Filter Consumer ID" ConsumerID="g_bcca2ac1_f0f1_4640_af30_8a0730ca840e" ID="c1638508205" ProviderConnectionPointID="ITransformableFilterValues" ProviderID="g_7fc41891_2e27_4835_99c8_5b6f80feb20f"><WebPartPages:TransformableFilterValuesToParametersTransformer ConsumerFieldNames="PageType" ProviderFieldNames="Page Field"></WebPartPages:TransformableFilterValuesToParametersTransformer>
</WebPartPages:SPWebPartConnection>
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應