2009-08-12 149 views

回答

2

您可以使用String.Format构建数据,并在配置文件中使用{0}
假设你有基本的获得者是你的数据,这应该很容易实现。

例如:

<add key="Mail" value="[email protected]"/> 
<add key="LinkFormat" value="[[Mail Us|mailto:{0}]]"/> 

然后(从try/catch语句剥离下来,检查数据):

public static string GetEmail() 
{ 
    return ConfigurationManager.AppSettings["Mail"]; 
} 

public static string GetEmailLinkformat() 
{ 
    string format = ConfigurationManager.AppSettings["LinkFormat"]; 
    string mail = GetEmail(); 
    return String.Format(format, mail); 
} 
+0

请问您可以发表一个例子吗? – 2009-08-12 11:30:27

+0

我已经在努力...... – Kobi 2009-08-12 11:31:27

+0

哦,谢谢Kobi,隆重的例子! :-)无论如何,我正在考虑任何解决方案,不需要任何额外的编码......但如果没有其他选择,那将起作用,再次感谢。 – 2009-08-12 11:33:49

-1

如果您在AppSetting使用$分隔符值,这些可以与被替换它们表示来自AppSettings的关键值,例如

<add key="PrivacyPolicyURL" 
    value="$domain$/Default.aspx?siteid=$siteid$&amp;locid=$locid$&amp;tpid=$tpid$" 
    /> 

使用以下函数进行替换;

public static string GetAppSetting(string key) 
{ 
    string keyValue = ConfigurationManager.AppSettings[key].ToString(); 

    foreach (System.Text.RegularExpressions.Match match in System.Text.RegularExpressions.Regex.Matches(keyValue, @"\$[\d\D]*?\$")) 
    { 
     try 
     { 
      string replaceWith = ConfigurationManager.AppSettings[match.Value.Replace("$", string.Empty)] ?? string.Empty; 
      keyValue = keyValue.Replace(match.Value, replaceWith); 
     } 
     catch 
     { 
      keyValue = keyValue.Replace(match.Value, string.Empty); 
     } 
    } 

    return keyValue; 
} 

所以在这个例子中,插入了AppSettings的domain,siteid,locid和tpid来产生类似的东西; www.mywebsite.com/Default.aspx?siteid=1001&locid=1001&tpid=1001

+0

这也是一个不错的选择,谢谢!不过,我更关注的是,例如,使用appSettings部分中的不同部分(如log4net部分)中声明的值。无论如何,我想任何选项都会涉及一些编码,不是吗? – 2009-08-12 14:40:42

相关问题