【问题标题】:Feature element repeatedly added with every feature activation/deactivation每次功能激活/停用都会重复添加功能元素
【发布时间】:2011-02-07 11:54:27
【问题描述】:

与整个范围相比,这是一种非常轻微的行为,但我想制止这种行为。

我创建了一个非常非常简单的 SharePoint 功能。它的清单中有两个元素:一个 aspx webpart 页面和一个元素 xml。我将在下面解释我的元素 xml,它只是添加了一个模块。

 <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 部件中的某些属性,那么我会发现自己在页面上有第二个 Web 部件。自然,每个类似的循环只会增加越来越多。我知道必须创建一个新的 webpart 才能使用我刚刚所做的更改,但为什么旧的 webpart 仍然在页面上?作为功​​能激活/停用过程的一部分,我是否可以让这个较旧的 Web 部件自动消失,而无需使用 Receiver 类?

编辑 基于我已经为solve this issue 使用了接收器这一事实,我最终只是添加了 webpart 删除作为功能停用的一部分。但我仍然希望也许我缺少一些东西。

【问题讨论】:

    标签: sharepoint moss schema web-parts


    【解决方案1】:

    很遗憾,除非您执行以下操作之一,否则内容将重复:

    解决方案1:您可以在激活功能中添加类似的代码以在页面中添加webpart,如下所示:

    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 文件一起使用,这样您在将 efatures 设置为隐藏时就不会再遇到此问题

    干杯

    【讨论】:

      【解决方案2】:

      SharePoint 不提供自动删除功能元素的声明方式 (xml)。您必须在功能接收器的 FeatureDeactiving 方法中添加一些代码才能以编程方式将其删除,抱歉。

      【讨论】:

      • 考虑到元素清单的其他部分(内容类型、字段类型、工作流、自定义操作)在停用某个功能时不再存在,我希望它会保持一致。你的回答就够了,谢谢你的帮助@x0n
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 2017-01-12
      • 2016-04-12
      • 2018-09-11
      • 2014-04-03
      • 1970-01-01
      相关资源
      最近更新 更多