Цикл через список флажка

Я создаю флажок списки:

<asp:CheckBoxList ID="CheckBoxes" DataTextField="Value" DataValueField="Key" runat="server"></asp:CheckBoxList>

И попытка получить значение выбранных пунктов:

List<Guid> things = new List<Guid>();
foreach (ListItem item in this.CheckBoxes.Items)
{
    if (item.Selected)
        things.Add(item.Value);
    }
}

Я получаю ошибку

"Лучшее соответствие перегруженного метода для 'Системы. Наборы. Универсальный. Список. Добавьте (Система. Гуид)', имеет некоторые недействительные аргументы"

6
задан djdd87 15 July 2010 в 22:05
поделиться

3 ответа

Список «вещь» исключает значение Guid. Вы должны преобразовать item.value в значение Guid:

List<Guid> things = new List<Guid>();
foreach (ListItem item in this.CheckBoxes.Items)
{
  if (item.Selected)
    things.Add(new Guid(item.Value));
}
8
ответ дан 9 December 2019 в 20:39
поделиться

ListItem.Value имеет тип System.String, а вы пытаетесь добавить его в List. Вы можете попробовать:

things.Add(Guid.Parse(item.Value));

Это будет работать до тех пор, пока строковое значение можно разобрать на Guid. Если это неясно, вы захотите быть более осторожным и использовать Guid.TryParse(item.Value).

4
ответ дан 9 December 2019 в 20:39
поделиться

Если метод Add вашего списка принимает GUID (см. сообщение об ошибке), но не принимает "item.value", то я бы предположил, что item.value не является GUID.

Попробуйте следующее:

...
things.Add(CTYPE(item.value, GUID))
...
0
ответ дан 9 December 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: