C# 获取复选框列表中的选定值

C# 获取复选框列表中的选定值,c#,asp.net,C#,Asp.net,当选中复选框列表时,我设置了以下方法 protected void chk1_SelectedIndexChanged(object sender, EventArgs e) { foreach (ListItem list in chk1.Items) { if (list.Selected) { string name = list.Value.ToString();

当选中复选框列表时,我设置了以下方法

 protected void chk1_SelectedIndexChanged(object sender, EventArgs e)
    {
        foreach (ListItem list in chk1.Items)
        {
            if (list.Selected)
            {
                string name = list.Value.ToString();
            }
        }

    }
我需要显示复选框列表中的选中项。但是,对于每次迭代,选定的属性总是为false。它从不满足条件

                if (list.Selected)
                {
                    string name = list.Value.ToString();
                }

如何修复此问题?

尝试类似的方法

var selectedListItems = chk1.Items.Cast<ListItem>().Where(x => x.Selected);
var selectedListItems=chk1.Items.Cast()。其中(x=>x.Selected);
还是你的情况

var list = chk1.Items.Cast<ListItem>().Where(x => x.Selected);
var list=chk1.Items.Cast()。其中(x=>x.Selected);
现在,您将拥有一个可以检查/编码的集合

另外,请确保正在触发此代码,或者检查是否有
PostBack


如果(!Is.PostBack){}我的钱在上面,您可以通过检查
来检查这一点。如果您正在重新绑定每个PostBack上的控件,请执行以下操作:

if (!Page.IsPostBack)
{ 
    // Only bind controls on initial page and let viewstate remember what the user did
}

检查了多少项?此外,如果选中的列表项目超过
1
list,则
name
将被覆盖列表中有3个项目,我需要显示选中的项目。选中1个值。是否有办法确保从不检查大于1的值。我不想使用收音机按钮您想在每次选中或取消选中某个项目时进行检查吗<控件上的code>AutoPostBack
属性还将确定行为,如果您希望在单击按钮后获取值,例如,我将从现有事件处理程序中删除代码,并将该代码放在单独的方法或按钮单击事件中。我看不到现有代码中显示的任何地方选择项的值也是您正在将其分配给name的值,但一旦您离开该方法名称,该方法名称就不可访问,它是该eventhandler的本地名称。您需要创建一个静态变量来保存所选项目。我希望这对你有意义。。?您需要显示所有相关代码