Caractéristique événement activé non déclenché lors de la création d'un nouveau sous-site avec modèle Web
-
10-12-2019 - |
Question
Lorsque je crée un nouveau site, j'ai un événement spécialisé sur feintactivé sur le Web que je voudrais courir.La fonctionnalité est activée mais l'événement Featureactivé n'est pas déclenché.
Le site est créé avec WebTemplate qui inclut le guid des fonctionnalités du nœud WebFeatures. De mon webtemplate d'oneet.xml qui spécifie la fonctionnalité
<WebFeatures>
<Feature ID="e6e83174-0e6a-4fb6-a3e9-f16739a08a93" />
</WebFeatures>
Voici mon code Featureactivé:
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", ""));
}
Lorsque je crée le site, je ne suis pas en mesure de déboguer le code.J'ai essayé de débogger.break () et mettez un point de rupture dans VS2010.
Lorsque je déploie le paquet de VS2010, le code FeatureActivé est déclenché.Donc, l'événement fonctionne, mais pas lorsque je crée le nouveau site. Quelqu'un sait comment résoudre ce problème?
La solution
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", ""));
}