我想在MVC中生成任何文件的完整Url(带域名等)。示例:.jpg
文件或exe
文件。
示例:如果我提供“〜/ images / abc.jpg”,则应返回“http://www.mywebsite.com/images/abc.jpg”
我知道以协议作为参数的Url.Action
重载。但Url.Action
只能用于操作。
我想要像Url.Content
这样的函数,它将协议作为参数。
您知道是否有任何方法可以获取任何文件的完整网址?
我尝试过:VirtualPathUtility.ToAbsolute
,ResolveClientUrl
,ResolveUrl
,但所有这些似乎都不起作用。
答案 0 :(得分:56)
new Uri(Request.Url, Url.Content("~/images/image1.gif"))
答案 1 :(得分:49)
您可以使用以下代码将“〜/”替换为absoulute URL。
System.Web.VirtualPathUtility.ToAbsolute("~/")
修改强>
首先,您需要定义一个方法。
public static string ResolveServerUrl(string serverUrl, bool forceHttps)
{
if (serverUrl.IndexOf("://") > -1)
return serverUrl;
string newUrl = serverUrl;
Uri originalUri = System.Web.HttpContext.Current.Request.Url;
newUrl = (forceHttps ? "https" : originalUri.Scheme) +
"://" + originalUri.Authority + newUrl;
return newUrl;
}
现在调用此方法将返回完整的absolure url。
ResolveServerUrl(VirtualPathUtility.ToAbsolute("~/images/image1.gif"),false))
输出将为http://www.yourdomainname.com/images/image1.gif
答案 2 :(得分:-6)
尝试使用它。
Url.Action("~/images/image1.gif", "/", null, Request.Url.Scheme)