2012-11-08 25 views
0

FormServerTemplates異常在SharePoint 「庫設置」 使用自定義的母版

樣式庫

SiteCollectionImages

頁面

我有幾個默認的SharePoint庫的位置和「圖書館se ttings「點擊我得到異常:

enter image description here 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(布爾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) 

但是,一個非常重要的注意,這個錯誤只出現在自定義masterpage!

默認v4 masterpage工作沒有任何問題。

任何想法可以導致一個問題嗎?

回答

0

這是至少奇怪的問題或奇怪的例外。但是在自定義masterpage上發現可能導致此異常的控件。

位於兩行代碼,可以說設置頁面上引起問題:

1)web.Lists.TryGetList(LISTTITLE);

2)RightsSensitiveVisibilityHelper.UserHasRights(PermissionContext.CurrentSite, SPBasePermissions.AddListItems, PermissionMode.Any,列表);

沒有例外,但如果我們將用這些方法比異常會出現一個!

我認爲這個錯誤,因爲web部件中含有的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()。「

所以我希望這會爲那些搜索相同錯誤的人節省時間。

1

沒有通過你的母版頁去,我的猜測是,有一些JavaScript缺少從自定義母版頁。我會嘗試的是比較使用v4母版頁渲染時的HTML頁面源與使用自定義母版頁渲染的輸出。然後,我會比較javascript - 不僅僅在頭部和頁面的底部,而且在整個過程中。我將特別比較ContextInfo對象分配並確保將這些屬性分配給相似的值。

我的想法是,有一些JavaScript代碼或引用該庫設置按鈕預期,卻找不到,這是什麼原因造成的錯誤。