我有一段代码可以更改 Sharepoint 2010 搜索中心结果页面上 SearchResultWebPart 的 XSLT(spFileItem - 是搜索结果页面的 SPFile):
SPLimitedWebPartManager wpManager = spFileItem.GetLimitedWebPartManager(PersonalizationScope.Shared);
foreach (WebPart wpItem in wpManager.WebParts)
{
if (wpItem is CoreResultsWebPart)
{
((CoreResultsWebPart)wpItem).UseLocationVisualization = false;
((CoreResultsWebPart)wpItem).Xsl = someXSL;
wpManager.SaveChanges(wpItem);
}
spFileItem.Update();
spFileItem.CheckIn(Consts.CheckInComment, SPCheckinType.MajorCheckIn);
但是,如果在功能激活时调用此代码(给出 InvalidOperationException - 不正确的对象状态),则此代码不起作用。但是它在控制台应用程序中完美运行。经过一番思考,我发现 SearchResultWebPart 中有一段代码,它检查 webpart 是否没有初始化——它在设置 XSL 属性时抛出了上面提到的异常。有人知道如何解决这个问题吗?对我来说,在 FeatureActivated 进行 XSL 更改会非常方便......