Получить абсолютный путь к содержимому файла
Есть ли простой (встроенный) способ в представлении mvc asp.net, чтобы получить абсолютный путь к файлу в папке содержимого?
В настоящий момент я использую
@Url.Content("~/Content/images/logo.png")
Но возвращаемый путь не является абсолютным.
Я знаю, что для таких случаев можно создать собственный помощник, но я хотел бы знать, есть ли более простой способ...
Ответы
Ответ 1
Это работает для меня:
Помощник:
using System;
using System.Web;
using System.Web.Mvc;
public static class UrlExtensions
{
public static string Content(this UrlHelper urlHelper, string contentPath, bool toAbsolute = false)
{
var path = urlHelper.Content(contentPath);
var url = new Uri(HttpContext.Current.Request.Url, path);
return toAbsolute ? url.AbsoluteUri : path;
}
}
Использование в cshtml:
@Url.Content("~/Scripts/flot/jquery.flot.menuBar.js", true)
// example output:
// http://example.com/directory/Scripts/flot/jquery.flot.menuBar.js
Ответ 2
Это создаст абсолютный URL-адрес изображения (или файла)
Request.Url.Scheme + "://" + Request.Url.Authority + Url.Content("~/Content/images/logo.png")
Ответ 3
Url.Content возвращает абсолютный путь. Вы хотите домен (и порт). Вы можете получить текущий домен, используя:
Request.Url.Authority
Затем объедините эту строку с абсолютной строкой пути вашего изображения.
Он вернет доменное имя и, если вы находитесь на другом порту, также будет содержать номер порта.
Ответ 4
HttpContext.Current.Server.MapPath("~/Content/images/logo.png");
Ответ 5
new Uri(Request.Url, Url.Content("~/Content/images/logo.png"))
это вызывает .ToString() Uri.
Вы также можете поместить Uri в переменную и вызвать .AbsoluteUri.