1

如何image tag source通过读取html 文件中的keyfrom AppSettings部分进行设置。web.config

我正在使用一个 html 文件,其中有一个图像标签,我想从web.config文件键设置图像源。

web.config 键是: <add key="Image" value="Image.gif" />

但我无法在源上设置密钥。

我试过这个:

 <img src="<%= ConfigurationSettings.AppSettings["Image"] %>" width="685" height="177" />

但没有从那里读取源代码。

4

3 回答 3

2

根据您的评论,您似乎正在尝试生成要通过电子邮件发送的 html 文件。你最好创建一个 html 文件place holders来获取你想要注入的信息。使用文本阅读器从文件中读取 html,并在文本上使用 regex 或 string.replace 替换place holders实际值。

您将需要一个完整的图像 URL。

例如

阅读 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();
        }
    }
于 2013-08-09T13:12:48.973 回答
1

尝试这个:<img src="<%= System.Web.Configuration.WebConfigurationManager.AppSettings["Image"].ToString() %>" width="685" height="177" />

于 2013-08-09T12:15:49.200 回答
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"]);

然后将邮件的正文属性设置为myString

于 2013-08-09T12:17:36.253 回答