تعيين قيمة HtmlDesignAssociated برمجياً
-
28-09-2020 - |
سؤال
أقوم بنشر مظهر مؤلف من الخادم (بما في ذلك ملفات .spcolor و.spfont وmaster.html وmaster.preview)، لكن لا يمكنني الحصول على الحقل "ملف مرتبط" لتحديده.لقد حاولت وضعه في فقط elements.xml
الملف وكذلك متلقي الحدث FeatureActivated
حدث.
العناصر.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();
}
}
لا تنتمي إلى sharepoint.stackexchange