我正在使用RazorEngine库生成HTML电子邮件。在HTML电子邮件中,我想要包含我客户的徽标图像。但是,我有问题显示它。我在.cshtml文件中定义了我的html模板。徽标图像位于"〜/ Images / Logo.png"。我已验证图像文件已复制到服务器,“复制到输出目录”设置为“始终复制”。
所以我的问题是如何在.cshtml中定义src属性的表达式?
<img src="@????"/>
编辑(我的解决方案):好的,我认为有一种直接的方法可以从TemplateBase中检索。我猜不会。所以我只是使用GetSiteRootUrl()方法获取根网站URL并将其添加到我的Image的网址中,然后将其设置为我的Model类中的属性。
在模型类
中LogoImageUrl = GetSiteRootUrl() + "Images/logo.png";
.cshtml定义
<img src="@Model.LogoImageUrl" />
获取网站根网址
的方法public static string GetSiteRootUrl()
{
var appPath = string.Empty;
//Getting the current context of HTTP request
var context = HttpContext.Current;
//Checking the current context content
if (context != null)
{
//Formatting the fully qualified website url/name
appPath = string.Format("{0}://{1}{2}",
context.Request.Url.Scheme,
context.Request.Url.Host,
context.Request.Url.Port == 80
? string.Empty
: ":" + context.Request.Url.Port
);
}
if (!appPath.EndsWith("/"))
appPath += "/";
return appPath;
}
答案 0 :(得分:3)
"~"
通常表示&#34;使用此网络请求的根网址&#34; ,由于电子邮件未附加到网络请求,因此无法解决该问题。而是使用完整的URL到您的服务器。如果您在多个文件中使用它,我建议将其放入web.config文件中的appSetting中,这样您就可以更改它而无需查找 - 替换一堆文件。
答案 1 :(得分:2)
您可以使用Server.MapPath
或Url.Content
:
<img src="@Server.MapPath("~/Images/Logo.png")"/>
或者
<img src="@Url.Content("~/Images/Logo.png")"/>