【问题标题】:ASP.NET MVC3 Root-relative path to virtual path in Controller or Model控制器或模型中虚拟路径的 ASP.NET MVC3 根相对路径
【发布时间】:2012-01-20 05:51:24
【问题描述】:

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

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

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

【问题讨论】:

  • Url.Content 在控制器中也应该可以正常工作(它返回一个字符串)。它在命名空间 System.Web.Mvc
  • 为什么需要控制器的虚拟路径?
  • @Phill - 我实际上需要在 JSON 对象中返回的图像的虚拟路径。我会更新问题。

标签: asp.net asp.net-mvc-3 virtual-path


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    • 2010-10-11
    • 2013-04-17
    相关资源
    最近更新 更多