我正在使用SharePoint Server 2007 + C#+ .Net 3.5 + VSTS 2008 + ASP.Net。我正在使用協作門戶模板。ASP.NET/SharePoint母版頁問題
我正在開發一個自定義的aspx頁面,並將其放在網站的_layout文件夾中,我想將SharePoint網站的default.master應用於此aspx頁面。任何關於如何實現這一目標的樣本?
我正在使用SharePoint Server 2007 + C#+ .Net 3.5 + VSTS 2008 + ASP.Net。我正在使用協作門戶模板。ASP.NET/SharePoint母版頁問題
我正在開發一個自定義的aspx頁面,並將其放在網站的_layout文件夾中,我想將SharePoint網站的default.master應用於此aspx頁面。任何關於如何實現這一目標的樣本?
您可以在PreInit事件中放置代碼,使您的自定義頁面使用當前網站的母版頁。
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
SPWeb myWeb = SPControl.GetContextSite(Context).OpenWeb();
string strUrl = myWeb.ServerRelativeUrl + "/_catalogs/masterpage/my.master";
this.MasterPageFile = strUrl;
}
或者用default.master替換my.master以便使用默認母版頁。或者檢查spweb的MasterUrl屬性並使用它。
無論哪種方式,它應該讓你朝着正確的方向前進。
做到這一點的最好方法是使用HttpModule。這樣就可以在所有應用程序頁面(即LAYOUTS文件夾中的頁面)上使用自定義主頁面。它可以使用一個功能部署,並可以激活每個Web應用程序(看到httpmodule需要在web.config中註冊它是Web應用程序的範圍。)
通過使它的Web應用範圍,您的最終用戶將擁有統一的用戶體驗,而不是單個頁面看起來像網站的前端,而所有其他(開箱即用)應用程序頁面仍然使用默認的sharepoint application.master。
有關代碼示例和深入的解釋更,看here。
P.S.由於缺少內容佔位符,您正在使用上面的代碼獲取錯誤。您需要創建自定義母版頁的副本。雖然樣式可以相同,但應用程序頁面比前端主頁面使用更多/其他ContentPlaceHolders。
只需複製您的自定義母版頁,將其從CustomMaster.master重命名爲CustomMasterEdit.master,然後將其用於應用程序頁面樣式,SharePoint將向您發出錯誤信息,告訴您哪些佔位符缺失,並持續添加所需的佔位符該網頁的作品(我相信有2或3個額外的佔位符)。
P.P.S.爲了使共享點顯示有意義的錯誤,請轉至web.config
並查找<SharePoint>
標記並將callstack
屬性從false
更改爲true
。然後,查找customErrors
標記並將mode
屬性設置爲"off"
。要完全啓用調試,您還可以啓用ASP.NET跟蹤。當然,你不應該做這在生產環境....
更多信息如何修改web.config中改善SharePoint顯示真正的錯誤信息,可以發現here。
和
感謝您的意見。 – George2 2010-03-08 12:17:52
當我使用您的代碼時,顯示SharePoint未知錯誤頁面。 – George2 2010-03-08 04:10:24
如果您使用: SPWeb myWeb = SPControl.GetContextWeb(Context); – 2010-03-11 14:53:08