Вопрос

Я развертываю составной вид с сервера (включая файлы .spcolor, .spfont, master.html и master.preview), но я не могу получить файл, связанный с полем, для выбора.Я пробовал устанавливать его только в elements.xml файл, а также файл получателя события 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
    }
}

Примечание:Я опустил другой не относящийся к делу код.

Это было полезно?

Решение

Хорошо, так что, по-видимому, пытаюсь установить поле HtmlDesignAssociated из самого elements.xml файл в Модуле работать не будет.

Как только я удалил это, код в приемнике событий сработал, и мой 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();
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top