我正在构建一个 MVC 应用程序,其中我正在从文件系统读取文件列表,并且我想将该文件的相对 URL 传递给视图,最好以“~/”为前缀,以便选择任何视图 cab 渲染适当的 URL。
为此,我需要枚举文件系统中的文件并将它们的物理路径转换回相对 URL。 我尝试过一些算法,但我担心效率和最少的字符串操作。 另外,我相信 .Net Framework 中没有任何内容可以执行此操作,但是最新的 MVC 版本中有可以执行此操作的内容吗?
目前我不知道有什么内置方法可以做到这一点,但这并不难,我是这样做的:
~
public string ReverseMapPath(string path)
{
string appPath = HttpContext.Current.Server.MapPath("~");
string res = string.Format("~{0}", path.Replace(appPath, "").Replace("\\", "/"));
return res;
}
这不是 UrlHelper.Content 方法的作用吗? http://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.content.aspx
System.Web 中的 VirtualPathUtility 类提供了常见虚拟路径操作的实用方法。
我做了一些挖掘,试图让 UrlHelper 类在控制器之外工作,然后我想起了一个在 aspx 页面中做同样事情的老技巧:
string ResolveUrl(string pathWithTilde)
希望这有帮助! 看: https://msdn.microsoft.com/en-us/library/system.web.ui.control.resolveurl(v=vs.110).aspx