Я создаю флажок списки:
<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);
}
}
Я получаю ошибку
"Лучшее соответствие перегруженного метода для 'Системы. Наборы. Универсальный. Список. Добавьте (Система. Гуид)', имеет некоторые недействительные аргументы"
Список «вещь» исключает значение 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));
}
ListItem.Value
имеет тип System.String
, а вы пытаетесь добавить его в List
. Вы можете попробовать:
things.Add(Guid.Parse(item.Value));
Это будет работать до тех пор, пока строковое значение можно разобрать на Guid
. Если это неясно, вы захотите быть более осторожным и использовать Guid.TryParse(item.Value)
.
Если метод Add вашего списка принимает GUID (см. сообщение об ошибке), но не принимает "item.value", то я бы предположил, что item.value не является GUID.
Попробуйте следующее:
...
things.Add(CTYPE(item.value, GUID))
...