Pregunta

Estoy implementando una apariencia compuesta desde el servidor (incluidos los archivos .spcolor, .spfont, master.html y master.preview), pero no puedo seleccionar el campo Archivo asociado.Intenté configurarlo solo en el elements.xml archivo así como el del receptor del evento FeatureActivated evento.

Elementos.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>

Y el código subyacente:

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
    }
}

Nota:He omitido otro código irrelevante.

¿Fue útil?

Solución

Ok, aparentemente estoy intentando configurar el campo. HtmlDesignAssociated desde el elements.xml El archivo en un módulo no funcionará.

Una vez que lo saqué, el código en el receptor de eventos funcionó y mi master.html El archivo ahora tiene un asociado. master.master.

Modifiqué un poco el código para utilizarlo. SPUrlUtility.CombineUrl en lugar de web.GetList o web.Lists.TryGetList("whatever").Aquí está el código que funciona:

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();
    }
}
Licenciado bajo: CC-BY-SA con atribución
scroll top