3

我们希望在每个 ASP.NET 页面中嵌入一些代码,以查询其“上次修改日期”并将其显示在页面底部。

过去,我们依靠对页面进行任何更改的人员手动更新页面底部的“此页面上次修改时间(今天) ”文本。很多时候他们忘记更新这个,这导致了一些关于该特定页面上最后更新信息的时间的混乱。由于该站点不是基于可以将此信息存储在其后端数据库中的 CMS,因此我们正在尝试确定页面上次从服务器上的文件系统保存的时间,并将该日期包含在页面的文本。

我不确定基于母版页的页面如何进入“最后修改日期”。我们真正要寻找的是查询内容页面文件的 LMD,以便我们可以将其嵌入页面的文本中,而不是它所基于的母版页的 LMD。

谢谢!

4

3 回答 3

6

想我会发布我的问题的答案,以便其他人可以受益。

我的解决方案是将标签控件添加到您希望显示“修改:+ 保存日期”信息的母版页。我们把我们的放在页脚:

Modified: <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

然后在后面的母版页代码中创建一个“Page_Load”事件(本网站使用代码后面和VB)并添加以下代码:

Dim strPath As String = Request.PhysicalPath
Label1.Text = "Modified: " + System.IO.File.GetLastWriteTime(strPath).ToString()

当页面加载时,它将执行上面的代码并将“标签”文本替换为文件最后保存到磁盘的日期。

希望这可以帮助。

(如果您知道更好的方法,请随时在评论中教育我们)

于 2011-03-24T20:08:07.457 回答
2

您将无法通过 javascript 从 Web 服务器上的文件系统获取上次修改日期。这是在客户端执行的,与上次修改物理 aspx 页面的时间无关。

这是我的建议:

  1. 通过简单地从 System.Web.UI.Page 继承来创建一个新的基页面类
  2. 在您的基页类中,使用 Request.PhysicalPath 将整个页面获取到当前页面并使用该路径创建一个新的 FileInfo 对象。
  3. 调用 FileInfo 对象的 Refresh() 方法获取最后修改日期(可以缓存)。
  4. 写出 LastWriteTime 属性以获取上次修改的时间。
  5. 确保要写出最后修改日期的页面继承自新的基类!

这是 FileInfo 类的链接:http: //msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx

祝你好运。

马蒂

于 2011-03-08T16:42:14.473 回答
1

您必须使用服务器端代码和 FileInfo 对象的混合来获取修改日期:httpServer.MapPath("~/virtual/page.aspx") ://www.communitymx.com/content/article.cfm?page=4&cid=06BF2 并使用to获取文件路径获取当前正在执行的页面。

我知道你想让它通用,所以我相信你可以使用Server.MapPathwithRequest.ServerVariables.Get("SCRIPT_NAME")或其他变量来通用。

HTH。

于 2011-03-08T16:46:07.007 回答