ASP.NET MVC获取View的最后修改日期/ FileInfo

4 asp.net-mvc master-pages fileinfo last-modified

我需要在工作中的每个应用程序页面上包含上次修改日期.我过去通过在WebForms母版页底部包含对<%= LastModified%>的引用来执行此操作,该页面将返回当前.aspx页面的上次修改日期.我的代码甚至会检查相关的.aspx.cs文件,比较最后修改的日期,并返回最近的日期.

有谁知道你是否可以阅读MVC视图的FileInfo?如果可能的话,我想将它包含在母版页中.

我有一个基本控制器,所有接线都准备就绪.我需要知道的是如何访问当前视图的FileInfo.

namespace MyMVCApp.Controllers
{
    public abstract class SiteController : Controller
    {
        public SiteController()
        {
            ViewData["modified"] = NEED TO GET FILEINFO OF CURRENT VIEW HERE;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*ran 6

您需要知道View的物理文件,该文件仅在处理视图时才知道,因此我们将工作延迟到此时为止:

在视图文件的底部,只需添加:

Last Modified Date: @File.GetLastWriteTime(this.Server.MapPath(this.VirtualPath))
Run Code Online (Sandbox Code Playgroud)

注意:它必须位于您想要日期的视图文件中.如果将其放在布局文件中,它将为您提供该文件的日期.但是,您可以使用a将日期输入页脚section

在视图中:

@section lastwrite
{
    Last Modified Date: @File.GetLastWriteTime(this.Server.MapPath(this.VirtualPath))
}
Run Code Online (Sandbox Code Playgroud)

布局:

@RenderSection("lastwrite", required: false)
Run Code Online (Sandbox Code Playgroud)


Ric*_*hez 1

以下将为您提供上次写入视图的日期:

// Last Modified Date
var strPath = Request.PhysicalPath;
ViewBag.LastUpdated = System.IO.File.GetLastWriteTime(strPath).ToString();
Run Code Online (Sandbox Code Playgroud)

注意到我使用了 ViewBag 而不是 ViewData。