Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET/SharePoint母版页问题_C#_Asp.net_.net_Sharepoint_Visual Studio 2008 - Fatal编程技术网

C# ASP.NET/SharePoint母版页问题

C# ASP.NET/SharePoint母版页问题,c#,asp.net,.net,sharepoint,visual-studio-2008,C#,Asp.net,.net,Sharepoint,Visual Studio 2008,我使用的是SharePoint Server 2007+C+.Net 3.5+VSTS 2008+ASP.Net。我正在使用协作门户模板 我正在开发一个自定义aspx页面,并将其放入站点的_布局文件夹中,我希望将SharePoint站点的default.master应用于此aspx页面。有关于如何实现此目标的示例吗?如果使用SharePoint Designer,则可以右键单击页面,然后选择要应用的母版页。可以在PreInit事件中添加代码,使自定义页面使用当前站点的母版页 protected

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


我正在开发一个自定义aspx页面,并将其放入站点的_布局文件夹中,我希望将SharePoint站点的default.master应用于此aspx页面。有关于如何实现此目标的示例吗?

如果使用SharePoint Designer,则可以右键单击页面,然后选择要应用的母版页。

可以在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时,让单个页面看起来像网站的前端

有关代码示例和更深入的解释,请参见

另外,由于缺少内容占位符,您使用上述代码时出现错误。您需要创建自定义母版页的副本。尽管样式可以相同,但应用程序页面使用的内容占位符多于前端母版页

只需复制自定义母版页,将其从CustomMaster.master重命名为CustomMasterEdit.master,然后将其用于应用程序页面样式,SharePoint将抛出一个错误,告诉您缺少哪些占位符,继续添加所需占位符,直到页面正常工作为止。我相信还需要2或3个额外的占位符

p.p.S.要使sharepoint显示有意义的错误,请转到web.config并查找标记,并将callstack属性从false更改为true。然后,查找customErrors标记并将mode属性设置为off。要完全启用调试,还可以启用ASP.NET跟踪。当然,您不应该在生产环境中执行此操作

可以找到有关修改web.config以使sharepoint显示真实错误消息的详细信息


当我使用您的代码时,会显示SharePoint未知错误页。如果您使用:SPWeb myWeb=SPControl.GetContextWebContext;我已使用SharePoint Designer打开该网站。我将页面放在_布局文件夹中,但SharePpoint designer左上角的文件夹列表中没有_布局文件夹。你知道怎么了吗?