Webテンプレートを使用して新しいサブサイトを作成するときにトリガされていない機能有効イベント

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/55577

質問

新しいサイトを作成するとき、私は走りたいウェブスコープの特徴最適化イベントを持っています。機能は有効になりますが、FeatureAtivatedイベントはトリガされません。

サイトは、WebFeaturesノードの機能GUIDを含むWebTemplateを使用して作成されます。 機能を指定するMy WebTemplate's onet.xmlから

<WebFeatures>
   <Feature ID="e6e83174-0e6a-4fb6-a3e9-f16739a08a93" />
</WebFeatures>
.

これは私のexpure反応コードです:

private const string QuicklaunchHeader = "Saksmappe";

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    SPWeb webTemp = properties.Feature.Parent as SPWeb;
    var web = webTemp.Site.RootWeb;
    var rootFolder = web.RootFolder;
    rootFolder.WelcomePage = "Pages/CaseFolder.aspx";
    rootFolder.Update();

    //Remove old custom quick launch entry
    RemoveQuickLaunchItems(QuicklaunchHeader, web);

    //Add custom quick launch entry
    var header = new SPNavigationNode(QuicklaunchHeader, 
                                       web.Navigation.Home.Url,   false);
    web.Navigation.QuickLaunch.AddAsFirst(header);

    //TODO Set correct urls
    header.Children.AddAsLast(new SPNavigationNode("Saksdetaljer", ""));
    header.Children.AddAsLast(new SPNavigationNode("Merknader", ""));
}
.

サイトを作成するとき、コードをデバッグできません。Debugger.break()を試してみました。

パッケージをVS2010から展開すると、機能がトリガされます。そのため、イベントは機能しますが、新しいサイトを作成したときではありません。 誰もがこの問題を解決する方法を知っていますか?

役に立ちましたか?

解決

You are using the rootweb of the site, not the current web, so any changing you are making is always to the rootweb. Instead of using webTemp to get rootweb, just use webTemp as the web.

private const string QuicklaunchHeader = "Saksmappe";

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    SPWeb web = properties.Feature.Parent as SPWeb;
    var rootFolder = web.RootFolder;
    rootFolder.WelcomePage = "Pages/CaseFolder.aspx";
    rootFolder.Update();

    //Remove old custom quick launch entry
    RemoveQuickLaunchItems(QuicklaunchHeader, web);

    //Add custom quick launch entry
    var header = new SPNavigationNode(QuicklaunchHeader, 
                                       web.Navigation.Home.Url,   false);
    web.Navigation.QuickLaunch.AddAsFirst(header);

    //TODO Set correct urls
    header.Children.AddAsLast(new SPNavigationNode("Saksdetaljer", ""));
    header.Children.AddAsLast(new SPNavigationNode("Merknader", ""));
}
ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top