使用Web模板创建新子站点时未触发功能激活事件
-
10-12-2019 - |
题
当我创建一个新站点时,我有一个Web范围的特派团功能,我想运行。该功能确实被激活,但未触发特派团激活的事件。
网站使用WebTemplate创建,其中包含WebFeatures节点中的功能GUID。 从我的webtemplate的onet.xml指定要素
<WebFeatures>
<Feature ID="e6e83174-0e6a-4fb6-a3e9-f16739a08a93" />
</WebFeatures>
.
这是我的特工代码:
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", ""));
}
.
当我创建该网站时,我无法调试代码。我已经尝试了调试器.Break()并在VS2010中放置断点。
当我从VS2010部署包时,触发功能的代码。所以活动确实有效,但在我创建新网站时没有。 有人知道如何解决这个问题吗?
解决方案
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", ""));
}