0

表单服务器模板

样式库

SiteCollectionImages

页面

我有几个默认的共享点库,其中“库设置”单击出现异常:

在此处输入图像描述 System.NullReferenceException:对象引用未设置为对象的实例。在 Microsoft.SharePoint.ApplicationPages.ListEditPage.OnLoad(EventArgs e) 在 ASP._layouts_listedit_aspx.OnLoad(EventArgs e) 在 System.Web.UI.Control.LoadRecursive() 在 System.Web.UI.Page.ProcessRequestMain(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 母版页正常工作。

有什么想法会导致那里出现问题吗?

4

2 回答 2

1

如果不浏览您的母版页,我的猜测是自定义母版页中缺少一些 javascript。我会尝试比较使用 v4 母版页呈现时的 HTML 页面源代码与使用自定义母版页呈现的输出。然后我会比较 javascript - 不仅在头部和页面底部,而且在整个页面中。我会特别比较 ContextInfo 对象分配,并确保将这些属性分配给相似的值。

我的想法是库设置按钮需要一些javascript代码或引用,但找不到,这就是导致错误的原因。

于 2012-11-09T17:33:39.190 回答
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()。”。

所以我希望这将为那些寻找同样错误的人节省时间。

于 2012-11-12T09:58:18.980 回答