Получить абсолютный путь к изображению для отправки по электронной почте
У меня есть представление (с одним или несколькими изображениями), которое я также хочу использовать в качестве тела сообщения электронной почты. Модель, обслуживающая представление, использует Url.Content()
чтобы получить абсолютный путь изображения. Этот подход прекрасно работает для веб-страниц, но когда я отображаю то же представление, что и тело письма, изображение не может быть найдено, что можно предположить по неполному пути из отображенного html.
<img src="/Media/fe882a1d-3b77-4264-ab91-cade985ecbed.JPG"/>
Я знаю, что эту проблему можно исправить, если бы я мог получить полный URL-адрес, например, с помощью Url.Action
с
Request.Url.Scheme
перегрузка для протокола. Есть ли способ определить полный URL-адрес из Url.Content
?
1 ответ
Попробуйте написать свой собственный метод расширения URL-адреса и решить с помощью Uri.GetLeftPart & UriPartial.Authority
public static class UrlExtensions
{
public static string AbsoluteContent(this UrlHelper urlHelper
, string contentPath)
{
Uri requestUrl = urlHelper.RequestContext.HttpContext.Request.Url;
string absolutePath = string.Format("{0}{1}",
requestUrl.GetLeftPart(UriPartial.Authority),
urlHelper.Content(contentPath));
return absolutePath;
}
}
Тогда используйте Url.AbsoluteContent("~/media/image.jpeg")
на ваших страницах. Это сделает http://domain/media/image.jpeg