我正在构建一个复选框列表:
<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);
}
}
我得到了错误
“最好的重载方法匹配 'System.Collections.Generic.List.Add(的System.Guid)' 有一些无效的参数“
答案 0 :(得分:8)
'thing'列表除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));
}
答案 1 :(得分:4)
ListItem.Value
的类型为System.String
,您正在尝试将其添加到List<Guid>
。你可以尝试:
things.Add(Guid.Parse(item.Value));
只要字符串值可解析为Guid
,它就会起作用。如果不清楚,您需要更加小心并使用Guid.TryParse(item.Value)
。
答案 2 :(得分:0)
如果List的Add方法确实接受了GUID(请参阅错误消息),但是不接受“item.value”,那么我猜item.value不是GUID。
试试这个:
...
things.Add(CTYPE(item.value, GUID))
...