将今天的日期添加到SharePoint母版页

时间:2010-03-29 14:42:07

标签: sharepoint sharepoint-2010 sharepoint-designer

当然必须有一种简单的方法可以将一个简单的代码块放入母版页:(我尝试使用明显的<%= "Hello, World!" %>语法但不允许使用代码块。然后尝试了一个站点列,但是不知道如何使用它们。然后尝试了网页区域,但母版页不能使用它们。尝试将网页部分(这是非常难以制作和部署顺便说一句)放入页面布局,但它只是不渲染:/

我想要的只是在我的网站顶部显示的内容很简单,它显示了今天的日期,我想要使用的格式是DateTime.Today.ToString("ddd, d MMMM yyyy")。我该怎么做?

(否则我正在使用javascript document.write!)

全心全意,

3 个答案:

答案 0 :(得分:6)

建议的解决方案是使用服务器端控件。正如你所说,为此开发一个webpart似乎有点矫枉过正。一个更简单的选择是使用一个简单的.ascx用户控件,然后在页面上引用它。 This post说明了如何将用户控件添加到Templates文件夹,然后在母版页中引用它。

虽然对于这么简单的问题,我认为你对JavaScript的想法实际上是可以的。它允许您在用户的时区显示当前时间,这在服务器端不是那么容易。对于这类事情来说,使用客户端代码似乎是一种黑客攻击,但在SharePoint中使用JavaScript代码实际上是一个非常强大的工具。

答案 1 :(得分:3)

你不会得到例外“Code blocks are not allowed in this file”吗?

无论如何,默认情况下不允许使用页面中的代码。如果每个可以使用SharePoint设计器编辑页面的人都会开始在其中放入一些代码,会发生什么结果?

如果您选择,请编辑web.conf:

<PageParserPaths> 
    <PageParserPath VirtualPath="/_catalogs/masterpage/*" CompilationMode="Always" AllowServerSideScript="true" IncludeSubFolders="true" /> 
</PageParserPaths>

答案 2 :(得分:1)

服务器端控件绝对是在主页上放置自定义代码的推荐解决方案。这是一个广泛的答案,涵盖了你想要做的几乎任何事情。但是,它并不总是你的第一个也是最后一个选择。

在您的情况下,您不一定需要编写自定义Web部件或服务器控件(并深入研究安全性和部署需求)。在我看来,这是过分的。由于您已经可以访问MasterPage,并且只需要日期/时间,因此您可以使用一些简单的JavaScript代码:

var now = new Date();
document.write(now.format("ddd, d MMMM yyyy"));

这当然会显示客户的日期和时间,而不是服务器。在大多数情况下并不是一件大事,因为您可以利用getTimezoneOffset()来修复任何时区差异。