我需要我的应用程序发送确认电子邮件给用户。我使用以下方法将视图呈现为字符串:
public string RenderViewToString<T>(string viewPath, T model)
{
using (var writer = new StringWriter())
{
var view = new WebFormView(viewPath);
var vdd = new ViewDataDictionary<T>(model);
var viewCxt = new ViewContext(ControllerContext, view, vdd, new TempDataDictionary(), writer);
viewCxt.View.Render(viewCxt, writer);
return writer.ToString();
}
}这是我从here那里得到的。它工作得很好,但是我的图片没有被包括在内。我使用的是:
<img src="<%:Url.Content("~/Resource/confirmation-email/imageName.png") %>"这给了我
http://resource/confirmation-email/imageName.png当在网站上查看页面时,这可以很好地工作,但是图像链接在电子邮件中不起作用。
我需要它给我自己:
http://domain.com/application/resource/confirmation-email/imageName.png我也尝试过使用:
VirtualPathUtility.ToAbsolute()发布于 2012-05-24 23:43:31
这是我最近在一个网站上使用的:
public static string ResolveServerUrl(string serverUrl, bool forceHttps = false, bool getVirtualPath = true)
{
if (getVirtualPath)
serverUrl = VirtualPathUtility.ToAbsolute(serverUrl);
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;
}然后,我可以使用它通过执行Core.ResolveServerUrl("~/Resource/confirmation-email/imageName.png");来生成绝对urls (假设您将静态函数包装在一个名为Core的类中)
HTH
发布于 2012-05-24 23:38:54
没有办法做到这一点。您可以添加以下扩展方法。
using System.Web.Mvc;
public static class UrlHelperExtensions
{
public static string ToAbsoluteUrl(this UrlHelper helper, string relativeUrl) {
if (Request.IsSecureConnection)
return string.Format("https://{0}{1}", Request.Url.Host, Page.ResolveUrl(relativeUrl));
else
return string.Format("http://{0}{1}", Request.Url.Host, Page.ResolveUrl(relativeUrl));
}
}然后你可以这样调用它
<img src="<%:Url.ToAbsoluteUrl("~/Resource/confirmation-email/imageName.png") %>" ...https://stackoverflow.com/questions/10740705
复制相似问题