我正在尝试在namevaluecollection中找到一个键。如果找到了密钥,则应该执行下一段代码,否则就不执行。
我的Web.config具有以下配置:
<Dropdownvalue>
<add key="5" value="Yes" />
<add key="8" value="No" />
<add key="9" value="Maybe" />
</Dropdownvalue>
我的代码是:
public string getMyId(int MyId)
{
NameValueCollection colMaster = (NameValueCollection)ConfigurationManager.GetSection("Dropdownvalue");
if (colMaster[MyId] != null)
{
//execute code
}
}
当MyId = 9时,由于显而易见的原因,它试图获取第9条记录而不是将MyId与Key 9进行比较,因此我得到了错误提示。
System.ArgumentOutOfRangeException: 'Index was out of range.
我知道下面的代码可以很好地工作:
colMaster["9"]
但是,我的值是动态变化的,因此在我的情况下不起作用。
namevaluecollection或外部是否有方法可以从web.config访问密钥?
答案 0 :(得分:0)
您的问题是MyID不是字符串。看下面的代码:
static void Main(string[] args)
{
var nvc = new NameValueCollection {{"5", "first value"}, {"6", "second value"}, {"9", "third value"}};
Console.WriteLine(nvc["5"]); // first value
Console.WriteLine(nvc[1]); // second value
Console.WriteLine(nvc[3]); // index was out of range
}
nvc[0]
将打印第一个值。将MyID转换为字符串以使其起作用。