Evento ativado por recurso não acionado ao criar um novo subsite com modelo da web
-
10-12-2019 - |
Pergunta
Quando crio um novo site, tenho um evento FeatureActivated com escopo na Web que gostaria de executar.O recurso é ativado, mas o evento FeatureActivated não é acionado.
O site é criado com webtemplate que inclui o guia de recursos no nó webfeatures.Do onet.xml do meu webtemplate que especifica o recurso
<WebFeatures>
<Feature ID="e6e83174-0e6a-4fb6-a3e9-f16739a08a93" />
</WebFeatures>
Aqui está meu código ativado por recursos:
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 crio o site não consigo depurar o código.Eu tentei Debugger.Break() e coloquei um ponto de interrupção no VS2010.
Quando eu implanto o pacote do VS2010, o código ativado pelo recurso é acionado.Então o evento funciona, mas não quando eu crio o novo site.Alguém sabe como resolver esse problema?
Solução
Você está usando o rootweb
do site, não da web atual, portanto, qualquer alteração que você fizer será sempre para o rootweb
.Em vez de usar webTemp para obter rootweb
, Apenas use webTemp
como a 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", ""));
}