我正在将一个小型的MVC 5网站移植到MVC 6,以发现重大变化.东西正在破碎.
MVC 5代码使用@ File.GetLastWriteTime(this.Server.MapPath(this.VirtualPath))来获取时间戳,如建议的here.显然在MVC 6中,.cshtml页面不再具有Server或VirtualPath成员.什么是新的咒语?
解决方法
18个月后重新审视我自己的问题……框架现在是ASP.NET Core 2.0 MVC,似乎框架,文档和最佳实践已经发生了一些变化.
您应该使用MS docs中描述的FileProvider.在此重新创建该文章没有意义,但请务必:
>将IHostingEnvironment添加到Startup构造函数参数,并将其保存在本地变量中,如文档中所述
>在Startup.ConfigureServices()中,调用services.AddSingleton(HostingEnvironment.ContentRootFileProvider);注册一个IFileProvider服务,也在文档中描述
>将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(); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。