【问题标题】:Exception in sharepoint "library setting" with custom masterpage带有自定义母版页的共享点“库设置”中的异常
【发布时间】:2012-11-08 09:08:31
【问题描述】:

FormServerTemplates

样式库

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,布尔型 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 母版页可以正常工作。

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

【问题讨论】:

    标签: sharepoint sharepoint-2010


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      至少这是一个非常奇怪的问题或奇怪的异常。但在自定义母版页上发现了可能导致此异常的控件。

      在该设置页面上找到了可能导致问题的两行代码:

      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));
              }
          }
      

      我不知道为什么我们有这段代码,还有 cmets 位于那里“确保在事件之前调用 CreateChildControls()。”。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-28
        • 2011-03-06
        • 1970-01-01
        • 2012-08-12
        • 1970-01-01
        • 1970-01-01
        • 2013-05-26
        相关资源
        最近更新 更多