웹 템플릿이있는 새 하위 사이트를 만들 때 기능 활성화 된 이벤트가 트리거되지 않음

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

문제

새 사이트를 만들 때 나는 실행하려는 웹 범위의 Featuriveated 이벤트를 가지고 있습니다.기능이 활성화되지만 FeatureActivated 이벤트가 트리거되지 않습니다.

사이트는 WebFeatures 노드에 기능 GUID를 포함하는 WebTemplate로 작성됩니다. 기능을 지정하는 WebTemplate의 onet.xml에서

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

여기에 내 featureativated 코드가 있습니다 :

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", ""));
}
.

사이트를 만들 때 코드를 디버깅 할 수 없습니다.나는 디버거를 시도하고 ()

VS2010에서 패키지를 배포 할 때 FeatureActivated 코드가 트리거됩니다.그래서 이벤트는 작동하지만 새로운 사이트를 만들 때는 그렇지 않습니다. 누구나이 문제를 해결하는 방법을 알고 있습니까?

도움이 되었습니까?

해결책

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