Programmgesteuertes Festlegen des HtmlDesignAssociated-Werts
-
28-09-2020 - |
Frage
Ich stelle einen zusammengesetzten Look vom Server bereit (einschließlich der Dateien .spcolor, .spfont, master.html und master.preview), aber ich kann das Feld „Zugehörige Datei“ nicht auswählen.Ich habe versucht, es einfach so einzustellen elements.xml
Datei sowie die des Ereignisempfängers FeatureActivated
Ereignis.
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>
Und der Code-Behind:
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
}
}
Notiz:Ich habe anderen irrelevanten Code weggelassen.
Lösung
Ok, ich versuche offenbar, das Feld festzulegen HtmlDesignAssociated
von dem elements.xml
Datei in einem Modul funktioniert nicht.
Nachdem ich das herausgenommen hatte, funktionierte der Code im Ereignisempfänger und mein master.html
Datei hat jetzt eine zugeordnete Datei master.master
.
Ich habe den Code ein wenig geändert, um ihn nutzen zu können SPUrlUtility.CombineUrl
anstatt web.GetList
oder web.Lists.TryGetList("whatever")
.Hier ist der Code, der funktioniert:
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();
}
}