ASP.NET / SharePoint主页面问题

时间:2010-03-07 07:04:04

标签: c# asp.net .net sharepoint visual-studio-2008

我正在使用SharePoint Server 2007 + C#+。Net 3.5 + VSTS 2008 + ASP.Net。我正在使用协作门户模板。

我正在开发一个自定义的aspx页面并将其放在网站的_layout文件夹中,我想将SharePoint网站的default.master应用于此aspx页面。关于如何实现这一目标的任何样本?

3 个答案:

答案 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 找到。