我需要获取母版页上正在执行的脚本的名称以更新上次写入时间。
我正在使用这个:
System.IO.File.GetLastWriteTime(Server.MapPath(Request.FilePath))
它适用于 default.aspx,但如果它在视图中,我无法确定文件的物理路径是什么来获取 LastWriteTime。
有针对这个的解决方法吗?当然,我在这里错过了一些非常容易的事情。
谢谢!
我需要获取母版页上正在执行的脚本的名称以更新上次写入时间。
我正在使用这个:
System.IO.File.GetLastWriteTime(Server.MapPath(Request.FilePath))
它适用于 default.aspx,但如果它在视图中,我无法确定文件的物理路径是什么来获取 LastWriteTime。
有针对这个的解决方法吗?当然,我在这里错过了一些非常容易的事情。
谢谢!
根据我对 System.Web.Routing 的了解,路由发生在 IIS 中,因此无法获得视图的真实物理路径。您可以随时尝试使用
this.Request.PhysicalPath
获取物理路径,但它会返回如下内容:
C:\Projects\MySolution\MyProject\ViewFolder\ViewAction
public static string ScriptBlock(this HtmlHelper html, string path)
{
return string.Format("<script src=\"{0}{1}\" type=\"text/javascript\"></script>\r\n", VirtualPathUtility.ToAbsolute(path), DateLastWriteFile(html.ViewContext.HttpContext.Server.MapPath(path)));
}
public static string CSSBlock(this HtmlHelper html, string path)
{
return string.Format("<link href=\"{0}{1}\" type=\"text/css\" rel=\"Stylesheet\" ></link>\r\n", VirtualPathUtility.ToAbsolute(path), DateLastWriteFile(html.ViewContext.HttpContext.Server.MapPath(path)));
}
public static string DateLastWriteFile(string path)
{
return "?Date=" + File.GetLastWriteTime(path).ToString("yyyyMMddhhmmss");
}
然后,我只是在我的母版或视图页面中调用该方法,显然在视图/母版页的顶部包含正确的命名空间之后:
<%= Html.CSSBlock("~/Content/Site.css") %>