在ASP.Net应用程序中执行Server.MapPath反转的最有效方法是什么

时间:2008-12-28 03:45:52

标签: asp.net asp.net-mvc

我正在构建一个MVC应用程序,我正在从文件系统中读取文件列表,我想将该文件的相对URL传递给视图,最好以“〜/”为前缀,以便选择任何视图cab适当地呈现URL。

为此,我需要枚举文件系统中的文件,并将其物理路径转换回相对URL。我已经尝试了一些算法,但我担心效率和最小的字符串操作。另外,我相信.Net Framework中没有任何东西可以执行此操作,但是最新的MVC版本中有什么可以吗?

3 个答案:

答案 0 :(得分:24)

目前我不知道有任何内置方法可以做到,但这并不困难,我这样做:

  • 我们需要获取Application根目录,并在~
  • 的新路径中替换它
  • 我们需要将反斜杠转换为斜杠

public string ReverseMapPath(string path)
{
    string appPath = HttpContext.Current.Server.MapPath("~");
    string res = string.Format("~{0}", path.Replace(appPath, "").Replace("\\", "/"));
    return res;
}

答案 1 :(得分:0)

答案 2 :(得分:-2)

我做了一些挖掘,尝试让UrlHelper类在控制器之外工作,然后我记得一个老技巧在aspx页面中做同样的事情:

string ResolveUrl(string pathWithTilde)

希望这有帮助! 看到: https://msdn.microsoft.com/en-us/library/system.web.ui.control.resolveurl(v=vs.110).aspx