在NameValueCollection

时间:2019-07-18 18:27:53

标签: c# asp.net .net namevaluecollection

我正在尝试在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访问密钥?

1 个答案:

答案 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转换为字符串以使其起作用。