2011-03-08 62 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。

相關問題