如何在Sharepoint母版页中包含动态信息?

Rag*_*czy 2 sharepoint web-config sharepoint-2007 appsettings

我们正在创建几个(19)网站,以便在Sharepoint 2007中托管,并希望使用Google Analytics.第一点很容易,只需将Google Analytics javascript放在Sharepoint母版页中,所有内容都按预期工作.

但是,我们希望19个站点中的每个站点都生成单独的统计信息,这是通过为每个站点设置不同的ID来完成的.我的第一个想法是将id存储在每个站点的web.config中,并更改母版页以便为javascript读取此内容:

<%= ConfigurationManager.AppSettings["google.analytics.key"]%> 
Run Code Online (Sandbox Code Playgroud)

不幸的是,Sharepoint不喜欢这样说并且说:此文件中不允许使用代码块.

我的问题是:

有没有办法在Sharepoint母版页中从web.config读取appSettings?要么

是否有更好的Sharepoint方式将特定于站点的信息导入母版页?要么

我是否坚持为每个网站使用单独的母版页?

Vla*_*ler 6

你提出的是非常不安全的,因为它允许使用sharepoint设计器的任何贡献者将任何代码添加到母版页,这绝不是一个好主意.我建议在任何情况下都使用服务器控件,这只需要几分钟的时间来开发,但之后会为你节省很多麻烦


小智 5

默认情况下,SharePoint不允许母版页中的代码,因此您需要将主页标记为对代码安全.在您的web.config中,您将具有以下设置:

<SharePoint>
<SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="10" totalFileDependencies="50" AllowPageLevelTrace="false">
  <PageParserPaths>
  </PageParserPaths>
</SafeMode>
Run Code Online (Sandbox Code Playgroud)

您需要将其更改为包括:

<PageParserPaths>
    <PageParserPath VirtualPath="/_layouts/masterpage/*" CompilationMode="Always" AllowServerSideScript="true" IncludeSubFolders="true"/>
</PageParserPaths>
Run Code Online (Sandbox Code Playgroud)

这将告诉SharePoint允许母版页中的代码.您可以使用相同的想法来允许其他SharePoint位置中的代码.

另一个选择是使用代码隐藏,但我假设您根据自己的问题不想这样做.