Sharepoint 每次功能激活/停用时重复添加的功能元素
与整个范围相比,这是一个非常小的行为,但我想阻止它 我创建了一个非常简单的SharePoint功能。它的清单中有两个元素:一个ASPXWebPart页面和一个xml元素。下面我将解释我的元素xml,它只是添加了一个模块Sharepoint 每次功能激活/停用时重复添加的功能元素,sharepoint,moss,schema,web-parts,Sharepoint,Moss,Schema,Web Parts,与整个范围相比,这是一个非常小的行为,但我想阻止它 我创建了一个非常简单的SharePoint功能。它的清单中有两个元素:一个ASPXWebPart页面和一个xml元素。下面我将解释我的元素xml,它只是添加了一个模块 <Elements xmlns="http://schemas.microsoft.com/sharepoint/"> <Module Name="Pass" Url="" Path=""> <File Url="pasq.as
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="Pass" Url="" Path="">
<File Url="pasq.aspx" NavBarHome="True" Type="Ghostable">
<AllUsersWebPart WebPartZoneID="Left" WebPartOrder="0">
<![CDATA[
WARGH THIS PART DOESN'T MATTER FOR THIS QUESTION!
]]>
</AllUsersWebPart>
</File>
</Module>
</Elements>
,我最终只是添加了Web部件删除作为功能停用的一部分。但我仍然希望我遗漏了一些东西。SharePoint没有提供声明式方式(xml)来自动删除功能元素。您必须在feature receiver上的FeatureDeactiving方法中添加一些代码,才能以编程方式将其删除,抱歉。很遗憾,除非您执行以下操作之一,否则内容将重复:
解决方案1:您可以向“激活”功能添加类似的代码,以便在页面中添加Web部件,如下所示:
SPFile file = page.File;
using (SPLimitedWebPartManager WebPartManager =
file.GetLimitedWebPartManager(PersonalizationScope.Shared))
{
try
{
SPLimitedWebPartCollection webparts = WebPartManager .WebParts;
if (webparts.Count == 0)
{
//set your web part
WebPartManager.AddWebPart(webpart, "MomoZone", 1);
}
}
catch(Exception ex)
{
throw;
}
finally
{
WebPartManager.Web.Dispose();
}
}
解决方案2:您可以将站点定义与仅在创建站点后运行的Onet文件一起使用,这样在将EFARES设置为hidden时就不会再出现此问题
干杯考虑到当某个功能被停用时,元素清单的其他部分(内容类型、字段类型、工作流、自定义操作)将停止,我希望它是一致的。您的回答就足够了,谢谢您的帮助@x0n