5

这听起来像一个简单的问题,但找不到我一生的答案。如何在控制器和/或模型中将根相对 url ( ~/my/path) 转换为虚拟路径 ( )?/mywebsite/my/path

在视图上它很容易做到,只需调用@Url.Content("~/my/path/"). 在控制器中获取物理路径也很容易使用Server.MapPath("~/my/path")。但我不知道如何在控制器中获取虚拟路径。

我的主要问题是我有一个图像的根相对路径,我将传递给将返回的 JSON 对象。在大多数情况下,这将由 javascript 读取并放在页面上的某个地方,我不能@Url.Content在我的 javascript 代码中使用。此外,在某些情况下,此 JSON 对象将被不了解其~含义的外部应用程序使用。

4

1 回答 1

7

在控制器中,您可以使用Url属性:

public ActionResult Foo()
{
    string url = Url.Content("~/my/path");
    ...
}

在模型中你不会做这样的事情。模型不应该对 url 生成一无所知。它根本不是它的责任。如果它需要使用 url,则该 url 应由处理 url 的应用程序层(即有权访问 HttpContext 的层)传递给它。

于 2012-01-20T07:38:42.760 回答