如何挖掘基于母版页的ASP.NET页的“上次修改日期”?

x8goxv8g  于 2023-04-08  发布在  .NET
关注(0)|答案(4)|浏览(159)

我们希望在每个ASP.NET页面中嵌入一些代码,查询其“最后修改日期”并在页面底部显示。
在过去,我们依赖于对页面进行任何更改的人手动更新“* 此页面最后修改于(todays date)*”文本在页面底部。很多时候他们忘记更新这一点,这是造成一些混乱,当信息最后更新的特定页面。由于该网站不是基于CMS可以存储此信息在其后端数据库,我们试图确定页面最后一次从服务器上的文件系统保存的时间,并将该日期包含在页面的文本中。
我不确定一个基于母版页的页面是如何进入“最后修改日期”的。我们真正需要的是查询内容页面文件的LMD,这样我们就可以将其嵌入到页面的文本中,而不是它所基于的母版页的LMD中。
谢谢!

dwbf0jvd

dwbf0jvd1#

我想我应该把我的问题的答案贴出来,这样其他人也能受益。
我的解决方案是在母版页中添加一个标签控件,在该控件中您希望“Modified:+日期保存”信息显示。我们把我们的页脚:

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

当页面加载时,它将执行上面的代码,并将“标签”文本替换为文件上次保存到磁盘的日期。
希望这能帮上忙。
(If你知道一个更好的方法,随时教育我们的评论)

gcmastyq

gcmastyq2#

你将无法从javascript的web服务器上的文件系统中获得最后修改日期。这是在客户端执行的,与最后一次修改物理aspx页面无关。
以下是我的建议:
1.通过简单地从System.Web.UI.Page继承来创建一个新的基页面类
1.在基页类中,使用Request.PhysicalPath将整个页获取到当前页,并使用该路径创建一个新的FileInfo对象。
1.调用FileInfo对象的Refresh()方法以获取最后修改日期(可以缓存)。
1.写出LastWriteTime属性以获取上次修改它的时间。
1.确保您要写出最后修改日期的页面继承自新基类!
下面是FileInfo类的链接:http://msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx
祝你好运
马蒂

p5cysglq

p5cysglq3#

您必须使用服务器端代码和FileInfo对象的混合来获取修改日期:http://www.communitymx.com/content/article.cfm?page=4&cid=06BF2,使用Server.MapPath("~/virtual/page.aspx")获取文件路径,以获取当前正在执行的页面。
我知道你想让它通用,所以我相信你可以使用Server.MapPathRequest.ServerVariables.Get("SCRIPT_NAME")或其他变量来通用地完成它。
嗯。

3mpgtkmj

3mpgtkmj4#

如果你的文件被编译成一个dll,你可以得到程序集的最后修改日期,代码取自here,并将其存储在cookie中1天:

<div class="footer text-center">
    <em>
        <%            
            try
            {
                if (Request.ServerVariables["SCRIPT_NAME"] == "/cs_admin/default.aspx" && Request.Cookies["CSAdmin_ModDate"].Value == null)
                {
                    System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
                    System.IO.FileInfo fileInfo = new System.IO.FileInfo(assembly.Location);
                    DateTime lastModified = fileInfo.LastWriteTime;
                    Response.Write(" (modified " + lastModified.ToShortDateString() + ")");
                    Response.Cookies["CSAdmin_ModDate"].Value = lastModified.ToShortDateString();
                    Response.Cookies["CSAdmin_ModDate"].Expires = DateTime.Today.AddDays(1);
                }else if(Request.ServerVariables["SCRIPT_NAME"] == "/cs_admin/default.aspx" && 
                    Request.Cookies["CSAdmin_ModDate"].Value != null && 
                    Request.Cookies["CSAdmin_ModDate"].Value.ToString() != "")
                {
                    Response.Write(" (modified " + Request.Cookies["CSAdmin_ModDate"].Value + ")");
                }
            }
            catch (Exception ex)
            { }
        %>                                      
    </em>
</div>

相关问题