2011-03-08 64 views
3

我们希望在每个查询其“上次修改日期”的ASP.NET页面中嵌入一些代码,并将其显示在页面的底部。如何挖掘基于主页的ASP.NET页面的“上次修改日期”?

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

我不确定基于主页面的页面是如何进入“上次修改日期”的。我们真正需要的是查询内容页面文件的LMD,以便将其嵌入到页面文本中,而不是基于它的主页面的LMD。

谢谢!

+0

你在哪里得到的最后修改日期的呢?你有数据库吗?或者你打算在日期中硬编码日期? - 您的支持评级很糟糕,请接受一些答案 – Spooks 2011-03-08 16:36:09

+0

我们正在尝试获取内容页面文件本身的最后修改日期。 – cpuguru 2011-03-08 16:39:02

回答

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() 

当页面加载时,它会执行上面的代码并用文件上次保存到磁盘的日期替换“Label”文本。

希望这会有所帮助。

(如果你知道一个更好的办法,随意教育我们在评论)

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

好运。

马蒂

+0

除非你做了一个AJAX请求。 – 2011-03-10 15:24:44

1

你不得不使用服务器端代码和FileInfo对象来获取修改日期的混合:http://www.communitymx.com/content/article.cfm?page=4&cid=06BF2与得到使用Server.MapPath("~/virtual/page.aspx")获取当前执行的页的文件路径。

我知道你想使它具有通用性,所以我相信你可以使用Server.MapPathRequest.ServerVariables.Get("SCRIPT_NAME")或其他变量来做到这一点。

HTH。

相关问题