从参数中的控件名称中查找表单值

时间:2012-10-22 18:45:51

标签: c# string variables replace

我需要使用值替换电子邮件中的占位符。占位符和表单控件名称位于自定义列表<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用作字符串,我将其作为字符串接收。

我不知道如何将该字符串转换为它所代表的值。

1 个答案:

答案 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;
                }
            }