我正在移植一个小MVC 5网站到MVC 6,以发现突破的变化。东西坏了。
MVC 5代码使用@File.GetLastWriteTime(this.Server.MapPath(this.VirtualPath))获得时间戳,这是推荐的这里。显然,在MVC 6中,.cshtml页面不再有Server或VirtualPath成员。新咒语是什么?
发布于 2017-12-12 07:31:22
18个月后再讨论我自己的问题..。现在的框架是ASP.NET Core2.0MVC,而且框架、文档和最佳实践似乎都发生了一些变化。
您应该像在FileProvider中所描述的那样使用博士。在这里重新创建这篇文章是没有意义的,但请确保:
services.AddSingleton(HostingEnvironment.ContentRootFileProvider);来注册IFileProvider服务,这在文档中也有描述然后,要实际获得最后修改的日期,控制器将如下所示:
public class HomeController : Controller
{
private IFileProvider _fileProvider;
public HomeController(IFileProvider fileProvider)
{
_fileProvider = fileProvider;
}
public IActionResult Index()
{
DateTimeOffset lastModifiedDate = _fileProvider.GetFileInfo(@"Views\Home\Index.cshtml").LastModified;
// use it wisely...
return View();
}发布于 2016-03-31 07:19:22
您可以从ApplicationBasePath服务中获得IApplicationEnvironment。
private readonly IApplicationEnvironment _env;
public FileController(IApplicationEnvironment appEnv)
{
_env= appEnv;
}
public IActionResult Index()
{
var myModel = _env.ApplicationBasePath;
return View(myModel);
}然后,您可以进行自己的路径计算,例如:
public IActionResult Index()
{
var myFileVirtualPath = "/ab/c.d"
var myModel = Path.Combine(_env.ApplicationBasePath, myFileVirtualPath);
return View(myModel);
}发布于 2019-05-06 13:22:33
@PaulWilliam‘solution 的另一种解决方案
在由于任何原因无法使用文件提供程序的情况下,可以使用System.IO.File静态类和返回DateTime obj的方法GetLastWriteTime或GetLastWriteTimeUtc来获取文件的最后修改日期:
DateTime lastModified = System.IO.File.GetLastWriteTimeUtc(filePath);注意,非utc方法GetLastWriteTime根据服务器/文件系统时间返回最后修改的日期。
除了这些方法和所有的写读方法之外,System.IO.File还包含帮助检索数据的方法,如上次访问时间、创建时间等。不仅是getter方法,还有getter方法。
博士:文件类- MS文档
还值得指出的是,您可以使用GetAttributes/SetAttributes方法来处理用于将文件的状态定义为Hidden、Compressed等的FileAttributes枚举。
博士:File.GetAttributes(字符串)方法- MS文档和FileAttributes Enum - MS文档
https://stackoverflow.com/questions/36326353
复制相似问题