質問

サーバーからの作成外観(.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();
    }
}
.

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top