我正在使用Url.Content("~/something.jpg")
在视图中获取绝对路径而没有问题。在ASP.net MVC控制器中使用Url.Content
我想在控制器中使用它,但它不起作用。它返回"/something.jpg"
而不是“http://www.mydomain.com/something.jpg”。
我尝试了几个在google和stackoverflow上找不到的技巧。
为什么Url.Content()
在控制器中不起作用?
任何想法都会有所帮助。
谢谢
我正在使用Url.Content("~/something.jpg")
在视图中获取绝对路径而没有问题。在ASP.net MVC控制器中使用Url.Content
我想在控制器中使用它,但它不起作用。它返回"/something.jpg"
而不是“http://www.mydomain.com/something.jpg”。
我尝试了几个在google和stackoverflow上找不到的技巧。
为什么Url.Content()
在控制器中不起作用?
任何想法都会有所帮助。
谢谢
我终于通过使用new Uri(Request.Url, Url.Content("~/something.jpg"));
找到了我要找的东西。它返回:
在控制器中仅使用Url.Content()
似乎是不够的。我们必须使用Uri
类具有完整的URL。
不管怎么说,谢谢大家的帮助
可能您保存您的网址配置项,它添加到前面...
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"]; }
}
}
编辑:或由罗伯特
var sUrlPublication = Request.Url.Host + Url.Content("~/....");
或者查看请求对象以查找请求将动态进入的域 –
@RobertLevy,如使用'ServerVariables'? – christiandev
不,我的意思是使用Request.Url.Host –
提到的我不知道这是为什么不控制器工作,可能是因为Url.Content是一个MVC帮手,但是现在我如何可以做你想做的。如果你想获得你的文件的绝对路径,你可以尝试这样的事:
var url=Path.Combine(Server.MapPath("../uploads"), "something.jpg");
最后,我认为你需要的是使用Server.Mappath()
它返回我的硬盘驱动器(“d:\ something.jpg”)的路径,而不是我要找的:完整的URL(“www.mydomain.com/ something.jpg“)。 – user3463579
波浪'〜'将指向该网站的路线,所以'URL.Content()'是做什么的预期。你可以发布你在控制器中使用的代码吗? – christiandev
我只做第一条指令:String sUrlPublication = Url.Content(“〜/ Publication/PublicationXML /”);并返回:“/ Publication/PublicationXML /”,但不包含该网站的路由 – user3463579
@ user3463579:是什么让您认为这是不正确的行为?如果应用程序位于域的根目录下,那么'〜'会解析为'/'。 – David