Получить абсолютный путь к изображению для отправки по электронной почте

У меня есть представление (с одним или несколькими изображениями), которое я также хочу использовать в качестве тела сообщения электронной почты. Модель, обслуживающая представление, использует 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

Другие вопросы по тегам