我需要使用值替换电子邮件中的占位符。占位符和表单控件名称位于自定义列表<MailReplacements>
中,例如:
replacement.placeholder = "[UserName]",
replacement.formcontrol = "NameText.Text",
由于[UserName]
确实是我想要使用的,因此它在string.Replace
中效果很好。但是,如何在string.replace中使用NameText.Text
的VALUE?如果我使用:
message.replace(replacement.placeholder, replacement.formcontrol);
我理解为收到[UserName]
替换为NameText.Text
的消息。如何将其替换为NameText.Text
的值(即“Joe Blow”)?
[UserName]
和NameText.Text
关联来自web.config
中的自定义配置。所以,我并没有故意将NameText.Text
用作字符串,我将其作为字符串接收。
我不知道如何将该字符串转换为它所代表的值。
答案 0 :(得分:0)
我刚找到FindControl:
var StoredPlaceholders = (CustomConfigurationSection)ConfigurationManager.GetSection("MailPlaceholders");
foreach (CustomConfigurationSection placeholder in StoredPlaceholders.SubSections["placeholder"])
{
MailReplacements.Add(new MailPlaceholder
{
Placeholder = placeholder.Attributes["name"],
Formcontrol = placeholder.Attributes["form"]
});
}
foreach (MailPlaceholder replacement in MailReplacements)
{
if ( !String.IsNullOrEmpty(replacement.Formcontrol))
{
TextBox txt = RequestForm.FindControl(replacement.Formcontrol) as TextBox;
if (txt != null) replacement.ReplacementValue = txt.Text;
}
}