Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将所有复选标记评估为false的复选框列表_C#_Asp.net - Fatal编程技术网

C# 将所有复选标记评估为false的复选框列表

C# 将所有复选标记评估为false的复选框列表,c#,asp.net,C#,Asp.net,我有一个简单的复选框列表,并使用for语句将所选值检索到一个字符串中。这必须很简单,但是如果选择了它,当它进行计算时,一切都返回false ASP代码 <asp:CheckBoxList runat="server" ID="ckblInterests" ClientIDMode="Static" RepeatColumns="2" /> ASP.NET代码: string interests = ""; for (int i = 0; i < ckblInterest

我有一个简单的复选框列表,并使用
for
语句将所选值检索到一个字符串中。这必须很简单,但是如果选择了它,当它进行计算时,一切都返回false

ASP代码

<asp:CheckBoxList runat="server" ID="ckblInterests" ClientIDMode="Static" RepeatColumns="2" />

ASP.NET代码:

string interests = "";

for (int i = 0; i < ckblInterests.Items.Count; i++)
{
    if (ckblInterests.Items[i].Selected)
        {
            interests += ckblInterests.Items[i].Value + ", ";
        }
    }
}
string interests=“”;
对于(int i=0;i

inside
if
语句每次循环时的计算结果为false。它确实正确地计算了列表中的10项。我被这么简单的事情难住了。有人能帮我确定是什么原因导致if语句返回false吗?

我认为您需要检查CHECKED属性,而不是SELECTED属性。

您的代码会在页面加载(或其他事件)时将复选框动态添加到列表中。这将导致在每次回发时清除并重新添加这些复选框的状态。您的页面加载应该在该部分周围有一个if(!page.ispostback),这样您就不会清除内容。

使用以下代码(大部分是您的代码)

Aspx

    <div>
        <asp:CheckBoxList runat="server" ID="ckblInterests" ClientIDMode="Static" RepeatColumns="2">
            <asp:ListItem>Awesome</asp:ListItem>
            <asp:ListItem>Tasty</asp:ListItem>
            <asp:ListItem>Terrible</asp:ListItem>
        </asp:CheckBoxList>
    </div>
    <asp:Button runat="server" ID="test" OnClick="test_Click" />
    <asp:Label runat="server" ID="label"></asp:Label>

真棒
美味的
可怕的
c#

受保护的无效测试\u单击(对象发送方,事件参数e)
{
字符串=”;
对于(int i=0;i
我能够制作以下内容。这当然是在点击按钮之后


是否绑定到未提及的数据源?

请确保在页面加载中绑定复选框列表时,如果(!page.IsPostBack){…绑定数据},则已设置此检查


这应该可以解决C#is.Net代码的问题。我将改变这一点,仅供参考,您应该查看
字符串。Join
,它将有助于创建分隔的内容列表,而无需所有字符串连接,并避免代码后面的分隔符。是否确实选中了
复选框列表中的任何项目?是否绑定页面加载中的列表或对其执行任何操作?是否有代码在页面加载时动态将复选框添加到列表中(或其他事件)?如果是这样的话,它们可能会被清除并在每次回发中重新添加。您的页面加载可能在该部分周围有一个
if(!page.ispostback)
。当我编辑if语句
ckblInterests.Items[I]。Checked
时,它会抛出一个错误,说ListItem不包含“Checked”的定义
    protected void test_Click(object sender, EventArgs e)
    {

        string interests = "";

        for (int i = 0; i < ckblInterests.Items.Count; i++)
        {
            if (ckblInterests.Items[i].Selected)
            {
                interests += ckblInterests.Items[i].Value + ", ";
            }
        }

        this.label.Text = interests;

    }