在 ASP.Net 应用程序中执行 Server.MapPath 逆向操作的最有效方法是什么

问题描述 投票:0回答:4

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

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

asp.net asp.net-mvc
4个回答
29
投票

目前我不知道有什么内置方法可以做到这一点,但这并不难,我是这样做的:

  • 我们需要获取应用程序根目录,并将其替换为新路径中的
    ~
  • 我们需要将反斜杠转换为斜杠

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

0
投票

这不是 UrlHelper.Content 方法的作用吗? http://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.content.aspx


0
投票

System.Web 中的 VirtualPathUtility 类提供了常见虚拟路径操作的实用方法。


-2
投票

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

string ResolveUrl(string pathWithTilde)

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

© www.soinside.com 2019 - 2024. All rights reserved.