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

Pet*_*yer 25 asp.net asp.net-mvc

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

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

CMS*_*CMS 25

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

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

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

  • 请注意,这不适用于网站内虚拟目录中指向根网站结构之外的文件. (2认同)