Funzione evento attivato non attivato durante la creazione di un nuovo sito secondario con il modello Web
-
10-12-2019 - |
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?
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", ""));
}