MVC内の任意のファイルの完全なURL(ドメイン名などを含む)を生成したい。例:.jpg
ファイルまたはexe
ファイル。
例:「〜/ images/abc.jpg」を指定すると、「 http://www.mywebsite.com/images/abc.jpg "が返されます。
プロトコルをパラメーターとして受け取るUrl.Action
オーバーロードを知っています。ただし、Url.Action
はアクションにのみ使用できます。
プロトコルをパラメータとして使用するUrl.Content
関数のようなものが必要です。
ファイルの完全なURLを取得する方法があるかどうかを知っていますか?
私は試してみました:VirtualPathUtility.ToAbsolute
、ResolveClientUrl
、ResolveUrl
しかし、これらのすべてが機能していないようです。
次のコードを使用して、「〜/」を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;
}
このメソッドを呼び出すと、完全な絶対URLが返されます。
ResolveServerUrl(VirtualPathUtility.ToAbsolute("~/images/image1.gif"),false))
出力はhttp://www.yourdomainname.com/images/image1.gif
new Uri(Request.Url, Url.Content("~/images/image1.gif"))