如何获取文本以外的 CheckBoxList 项的值

How to get value of CheckBoxList items other than text

我是一个简单的 Web 表单,它具有带多项选择的 CheckBoxList,我想获取项目的值而不是文本。

 <asp:CheckBoxList ID="ChkAreaOfInterest" runat="server" CssClass="row-dd" >
    <asp:ListItem Value="0" Selected="True">---SELECT OPTION--</asp:ListItem>
    <asp:ListItem Value="One">RED</asp:ListItem>
    <asp:ListItem Value="Two">GREEN</asp:ListItem>
    <asp:ListItem Value="Three">BLUE</asp:ListItem>
</asp:CheckBoxList>

我使用下面的代码获取值,但它获取了项目的文本

List<ListItem> selectedInterest = new List<ListItem>();
foreach (ListItem item in ChkAreaOfInterest.Items)
if (item.Selected) selectedInterest.Add(item);
string sCheckedValue = string.Join(",", selectedInterest);

当您 string.Join(",", selectedInterest) - 运行时将对 selectedInterest 中的每个项目调用 .ToString() 实际上 returns .Text 属性 的值.

相反,您需要加入 ListItem.Value 属性值。这可以用 LINQ 完成:

var selectedInterest = ChkAreaOfInterest.Items.OfType<ListItem>().Where(i => i.Selected);
var sCheckedValue = string.Join(",", selectedInterest.Select(i => i.Value));

为什么你不能试试这个

 List<string> selectedInterest = new List<string>();
 for (int i = 0; i < ChkAreaOfInterest.Items.Count - 1; i++ )
 {
     if (ChkAreaOfInterest.Items[i].Selected)
     {
        selectedInterest.Add(ChkAreaOfInterest.Items[i].Value);
     }
 }