我正在使用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