我正在使用SharePoint Server 2007 + C#+。Net 3.5 + VSTS 2008 + ASP.Net。我正在使用协作门户模板。
我正在开发一个自定义的aspx页面并将其放在网站的_layout文件夹中,我想将SharePoint网站的default.master应用于此aspx页面。关于如何实现这一目标的任何样本?
答案 0 :(得分:1)
如果您使用SharePoint Designer,则可以右键单击页面,然后选择要应用的母版页。
答案 1 :(得分:1)
您可以将代码放入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属性并使用它。
无论哪种方式,都应该让你朝着正确的方向前进。答案 2 :(得分:1)
最好的方法是使用HttpModule。这样可以为所有应用程序页面(即LAYOUTS文件夹中的页面)使用自定义母版页。它可以使用一个功能进行部署,并且可以根据Web应用程序进行激活(因为httpsodule需要在web.config中注册,因此它是web应用程序范围。)
通过使其成为网络应用程序范围,您的最终用户将拥有统一的用户体验,而不是看起来像网站前端的单个页面,而所有其他(开箱即用)应用程序页面仍然使用默认sharepoint application.master。
有关代码示例和更深入的解释,请查看 here 。
P.S。由于缺少内容占位符,因此使用上述代码时出现错误。您需要创建自定义母版页的副本。虽然样式可以相同,但应用程序页面使用的内容主页面数多于其他ContentPlaceHolders。
只需复制自定义母版页,将其从CustomMaster.master重命名为CustomMasterEdit.master并将其用于应用程序页面样式,SharePoint会抛出错误,告诉您哪些占位符丢失,继续添加所需的占位符,直到页面有效(我相信需要2或3个额外的占位符)。
PPS 要使有意义的sharepoint显示错误,请转到web.config
并查找<SharePoint>
标记并从{{1}更改callstack
属性到false
。然后,查找true
代码并将customErrors
属性设置为mode
。要完全启用调试,还可以启用ASP.NET跟踪。当然,你不应该在你的生产环境中这样做....
有关修改web.config以使sharepoint显示真实错误消息的更多信息可以在 here 找到。
和