プログラムでHtmLDesignAssocateated Valueを設定します
-
28-09-2020 - |
質問
サーバーからの作成外観(.spcolor、.spfont、master.html、master.previewファイルを含む)を展開していますが、フィールド関連ファイルを選択することはできません。elements.xml
ファイルだけでなく、Event ReceiverのFeatureActivated
イベントで設定しました。
elements.xml:
<File Path="Master\corporate.html" Url="corporate.html" Type="GhostableInLibrary" ReplaceContent="True">
<Property Name="ContentType" Value="Html Master Page"></Property>
<Property Name="UIVersion" Value="15"></Property>
<Property Name="HtmlDesignAssociated" Value="TRUE"></Property>
<Property Name="FSObjType" Value="0"></Property>
</File>
.
とコード後ろ:
SPList masterGallery = web.Lists.TryGetList("Master Page Gallery");
SPListItemCollection masterItems = masterGallery.Items;
for (int m = 0; m < masterItems.Count; m++)
{
SPListItem page = masterItems[m];
if(page["Name"].ToString() == "corporate.html")
{
page["HtmlDesignAssociated"] = true;
page.Update(); // forgot to include this line
}
}
.
注:他の無関係なコードを省略しました。
解決
OK SO MODULEのHtmlDesignAssociated
ファイルからField elements.xml
を設定しようとしています。
イベント受信側のコードとMy master.html
ファイルには、master.master
があるようになりました。
SPUrlUtility.CombineUrl
またはweb.GetList
の代わりにweb.Lists.TryGetList("whatever")
を利用するために、コードを少し変更しました。これが機能するコードです:
var masterGallery = SPUrlUtility.CombineUrl(relativePath, "_catalogs/masterpage");
SPList master = web.GetList(masterGallery);
SPListItemCollection masterItems = master.Items;
for (int m = 0; m < masterItems.Count; m++)
{
SPListItem page = masterItems[m];
if (page["Name"].ToString() == "corporate.html")
{
page["HtmlDesignAssociated"] = true;
page.Update();
}
}
. 所属していません sharepoint.stackexchange