我正在使用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