获取图像在电子邮件中发送的绝对路径

时间:2014-03-28 11:10:54

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 filepath

我有一个视图(有一个或多个图像)我也想用作电子邮件的正文。服务于视图的模型使用Url.Content()来检索绝对图像路径。这种方法适用于网页,但是当我呈现与电子邮件正文完全相同的视图时,则无法找到由呈现的html中的不完整路径建议的图像。

 <img src="/Media/fe882a1d-3b77-4264-ab91-cade985ecbed.JPG"/>

我知道如果我可以使用

访问Url.Action这样的完整网址,就可以修复此问题
Request.Url.Scheme

协议过载。有没有办法确定Url.Content的完全限定网址?

1 个答案:

答案 0 :(得分:1)

尝试编写自己的网址扩展方法,并在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