2015-02-09 2 views
0

Я пытаюсь отладить проблему, которую я не создал, и я получаю общую ошибку «данный ключ отсутствовал в словаре». Вот код:Данный ключ отсутствовал в словаре. VB.NET

Dim myInfo As New Dictionary(Of Integer, String) 

         For i As Integer = 0 To Region.GetRegionCount - 1 
          myInfo.Add(i, Server.HtmlEncode(ContentItem.Properties("StoreInfoRegion" & i).Value.ToString)) 
         Next 

         Session(SESSION_INFO) = myInfo 

Когда я шагаю через это ошибка происходит на вызов «Добавить», я думаю Im смущен, потому что это добавление ключа не пытается получить доступ к одному.

Спасибо!

+0

Это довольно большая строка кода. Ошибка при доступе к свойствам –

+0

да, это похоже на то, что «ContentItem.Properties» делает доступ к словарю. – DLeh

+0

Мое замешательство - это просто попытка добавить ключ, а не читать его. – chromeOne7

ответ

2

У вас есть довольно большая строка кода, разделить его на части, и вы можете найти, где проблема в точности.

Вместо

myInfo.Add(i, Server.HtmlEncode(ContentItem.Properties("StoreInfoRegion" & i).Value.ToString)) 

У

Dim propertyValue As String 
propertyValue = ContentItem.Properties("StoreInfoRegion" & i).Value.ToString 
propertyValue = Server.HtmlEncode(propertyValue) 
myInfo.Add(i, propertyValue) 

С этим изменением, я уверен, что вы увидите ошибку на 2-й линии, где вы запрашиваете значение свойства. Это означает, что вы не имеете значение для «StoreInfoRegion» & я

Вы могли бы сделать

If ContentItem.Properties.ContainsKey("StoreInfoRegion" & i) Then 
    Dim propertyValue As String 
    propertyValue = ContentItem.Properties("StoreInfoRegion" & i).Value.ToString 
    propertyValue = Server.HtmlEncode(propertyValue) 
    myInfo.Add(i, propertyValue) 
End If 

Но я думаю, вы должны сначала понять, почему нет никакого значения для этого ключа в первую очередь.

+0

Он не работает в этой строке, как я могу проверить это до того, как вы когда-либо получили доступ к свойству? Я парень C#, поэтому я новичок в VB.NET. – chromeOne7

+1

Предполагая, что 'ContentItem.Properties' - это словарь, вы можете добавить эту строку перед вызовом myInfo.Add():' If Not ContentItem.Properties.ContainsKey ("StoreInfoRegion" & i) Затем Continue For' – ThatShawGuy

+0

спасибо, это, однако, ошибки, нет члена, называемого ContainsKey, который является сторонней поисковой системой продукта. – chromeOne7

Смежные вопросы