Domanda

Quando creo un nuovo sito ho un evento di protagonista fuso Web che vorrei correre.La funzione viene attivata ma l'evento featureA attivato non è attivato.

Il sito viene creato con WebTemplate che include la funzionalità Guid nel nodo WebFeatures. Dal mio webtemplate onet.xml che specifica la funzione

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

Ecco il mio codice featureatived:

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

Quando creo il sito non sono in grado di eseguire il debug del codice.Ho provato Debugger.break () e mettendo un punto di interruzione in VS2010.

Quando implemendo il pacchetto da VS2010 il codice featureAttived viene attivato.Quindi l'evento funziona, ma non quando creo il nuovo sito. Qualcuno sa come risolvere questo problema?

È stato utile?

Soluzione

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", ""));
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top