5

我需要在工作申请的每一页上注明最后修改日期。我曾经通过在我的 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;
        }
    }
}
4

3 回答 3

6

你需要知道View的物理文件,只有在处理view的时候才知道,所以我们把工作推迟到那个时候:

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

Last Modified Date: @File.GetLastWriteTime(this.Server.MapPath(this.VirtualPath))

注意:它必须在您想要日期的视图文件中。如果你把它放在布局文件中,它会给你那个文件的日期。但是,您可以使用section

在视图中:

@section lastwrite
{
    Last Modified Date: @File.GetLastWriteTime(this.Server.MapPath(this.VirtualPath))
}

在布局中:

@RenderSection("lastwrite", required: false)
于 2015-09-01T16:59:43.400 回答
1

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

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

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

于 2011-09-06T20:40:03.217 回答
0

尝试这个:

private DateTime? GetDate(string controller, string viewName)
{
    var context = new ControllerContext(Request.RequestContext, this);
    context.RouteData.Values["controller"] = controller;
    var view = ViewEngines.Engines.FindView(context, viewName, null).View as BuildManagerCompiledView;
    var path = view == null ? null : view.ViewPath;
    return path == null ? (DateTime?) null : System.IO.File.GetLastWriteTime(path);
}
于 2013-12-09T08:28:38.490 回答