如何设置image tag source
免于阅读html文件中key
的 AppSettings 部分中的web.config
。
我正在使用一个html文件,其中有一个图片标记,我想从web.config
文件密钥设置图像源。
web.config键是:<add key="Image" value="Image.gif" />
但我无法在源上设置密钥。
我试过这个:
<img src="<%= ConfigurationSettings.AppSettings["Image"] %>" width="685" height="177" />
但不是从那里读源。
答案 0 :(得分:2)
根据您的评论,您似乎正在尝试生成要通过电子邮件发送的html文件。最好使用place holders
创建一个html文件,以获取要注入的信息。使用文本阅读器从文件中读取html,并在文本上使用regex或string.replace替换实际值的place holders
。
您需要拥有图片的完整网址。
e.g。
阅读HTML
var HTML = EmailTemplate.GetHTMLFromTemplate(path to template)
public static string GetHTMLFromTemplate(string templatepath)
{
var TemplateBody = new StringBuilder();
using (var Reader = new StreamReader(templatepath))
{
string Line;
while ((Line = Reader.ReadLine()) != null)
{
TemplateBody.Append(Line);
}
}
return TemplateBody.ToString();
}
然后替换html的部分
String.Replace("[image placeholder]", ConfigurationManager.AppSettings["Image"]);
电子邮件模板类看起来像这样(这是非常古老的代码!!)
public class EmailTemplate
{
public string Body { get; private set; }
public static EmailTemplate GetTemplate(string body, string url, string html)
{
var AmendedHTML = new StringBuilder(html);
AmendedHTML.Replace("[body]", body);
AmendedHTML.Replace("../images", url + "images");
var MyEmailTemplate = new EmailTemplate { Body = AmendedHTML.ToString() };
return MyEmailTemplate;
}
public static EmailTemplate GetTemplate(string body, string title, string url, string year, string html)
{
var AmendedHTML = new StringBuilder(html);
AmendedHTML.Replace("[BODY]", body);
AmendedHTML.Replace("[HEADING]", title);
AmendedHTML.Replace("../images", url + "images");
AmendedHTML.Replace("[DATE]", year);
AmendedHTML.Replace("[contactus.aspx]", url + "contactus/index.aspx");
AmendedHTML.Replace("[unsubscribe.aspx]", url + "register/unsubscribe.aspx");
var MyEmailTemplate = new EmailTemplate { Body = AmendedHTML.ToString() };
return MyEmailTemplate;
}
public static string GetHTMLFromTemplate(string path)
{
var TemplateBody = new StringBuilder();
using (var Reader = new StreamReader(path))
{
string Line;
while ((Line = Reader.ReadLine()) != null)
{
TemplateBody.Append(Line);
}
}
return TemplateBody.ToString();
}
}
答案 1 :(得分:1)
试试这个:<img src="<%= System.Web.Configuration.WebConfigurationManager.AppSettings["Image"].ToString() %>" width="685" height="177" />
答案 2 :(得分:1)
您想要替换.html电子邮件模板中的值。
您可以通过将文件读入内存并替换.html文件中的占位符来实现。
将图片标记更改为
<img src="$$image$$" width="685" height="177" />
然后在你的代码中
string myString = "";
using (StreamReader reader = new StreamReader(Server.MapPath("~/Email/Product/<nameofthepage>.html"))) {
myString = reader.ReadToEnd();
}
myString = myString.Replace("$$image$$", ConfigurationSettings.AppSettings["Image"]);
然后将邮件的body属性设置为myString