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