FormServerTemplates
样式库
SiteCollectionImages
信息页
我有几个默认的sharepoint库,其中“库设置”点击我有例外:
System.NullReferenceException:未将对象引用设置为对象的实例。在位于System.Web.UI.Page.ProcessRequestMain的System.Web.UI.Control.LoadRecursive()的ASP._layouts_listedit_aspx.OnLoad(EventArgs e)上的Microsoft.SharePoint.ApplicationPages.ListEditPage.OnLoad(EventArgs e)(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
我的所有调查都显示此问题,因为 DocumentTemplateUrl 为空!
this.strDocTemplateURL = "";
if (this.iBaseType == SPBaseType.DocumentLibrary)
{
this.strDocTemplateURL = ((SPDocumentLibrary) this.spList).DocumentTemplateUrl;
this.DocumentLibraryGeneralLinks.Visible = true;
}
if (this.strDocTemplateURL.Length != 0)
但有一个非常重要的说明,这个错误只出现在自定义母版页上!
默认的v4母版页没有任何问题。
有什么想法会导致问题吗?
答案 0 :(得分:1)
如果不浏览主页,我的猜测是自定义母版页中缺少一些javascript。我将尝试比较使用v4母版页渲染时的HTML页面源与使用自定义母版页的渲染输出。然后我会比较javascript - 不只是在head部分和页面底部,而是整个。我将特别比较ContextInfo对象分配,并确保将这些属性分配给类似的值。
我的想法是“库设置”按钮需要一些javascript代码或引用,但无法找到,这就是导致错误的原因。
答案 1 :(得分:0)
至少这是一个非常奇怪的问题或奇怪的例外。但是在自定义母版页上找到了可能导致此异常的控件。
找到了可能导致该设置页面出现问题的两行代码:
1)web.Lists.TryGetList(listTitle);
2)RightsSensitiveVisibilityHelper.UserHasRights(PermissionContext.CurrentSite, SPBasePermissions.AddListItems, PermissionMode.Any,list);
没有例外但是如果我们将使用其中一种方法而不是异常会出现!
我认为这个错误是因为webpart在OnLoad方法中包含奇怪的代码,它确保子控件和创建标题:
protected override void OnLoad(EventArgs e)
{
try
{
base.OnLoad(e);
this.EnsureChildControls();
this.InitWebPartHeader();
}
catch (Exception ex)
{
this.Controls.Clear();
this.Controls.Add(new LiteralControl(ex.Message));
}
}
我不知道为什么我们有这个代码而且还有那里的注释“确保在事件之前调用CreateChildControls()。”
所以我希望这会为那些因同样错误而搜索的人节省时间。