在ASP.net MVC控制器中使用Url.Content

时间:2014-05-22 13:40:28

标签: asp.net-mvc asp.net-mvc-4

我正在使用Url.Content("~/something.jpg")在视图中获得绝对路径而没有问题。

我想在控制器中使用它,但它不起作用。它返回"/something.jpg"而不是“http://www.mydomain.com/something.jpg”。

我在google和stackoverflow上尝试了一些技巧但没有成功。

为什么Url.Content()在控制器中不起作用?

任何想法都会有所帮助。

谢谢

3 个答案:

答案 0 :(得分:1)

我不知道为什么这不能在控制器中工作,因为Url.Content是一个mvc帮助器,但我现在你怎么做你想要的。如果你想获得你的文件的绝对路径,你可以尝试这样的事情:

var url=Path.Combine(Server.MapPath("../uploads"), "something.jpg");

总之,我认为您需要的是 Server.MapPath()

答案 1 :(得分:1)

我终于使用new Uri(Request.Url, Url.Content("~/something.jpg"));找到了我正在寻找的东西。它返回:

  

http://www.mydomain.com/something.jpg;

在控制器中仅使用Url.Content()似乎还不够。我们必须使用Uri类来获取完整的URL。

无论如何,谢谢大家的帮助

答案 2 :(得分:0)

您可以拥有一个包含您的网址的配置条目,并将其附加到前面...

var sUrlPublication = ConfigHelper.SiteUrl + Url.Content("~/....");

将网址添加到AppSettings ...

<appSettings>
  <add key="SiteURL" value="...."/>
</appSettings>

您可以添加ConfigHelper类...

using System.Configuration;

public static class ConfigHelper
{
  public static string SiteUrl
    {
      get { return ConfigurationManager.AppSettings["SiteURL"]; }
    }
}

编辑:或者正如Robert提到的那样

var sUrlPublication = Request.Url.Host  + Url.Content("~/....");