/ チェックボックスリストが無効の場合、/ item.Selectedはfalseです。 - c#、asp.net

checkboxlistが無効の場合、item.Selectedはfalseです。 - c#、asp.net

特定のユーザーに対して特定のアイテムが無効になっているチェックボックスリストがあります。

ここに画像の説明を入力

「保存」をクリックすると、以下のコードが実行されます。

 foreach (ListItem item in myCheckBoxList.Items)
{
if (!item.Selected)
{
continue;
}
selectedValues.Add(item.Value);
}

ただし、item.Selectedは、無効になっている項目が「選択されている」場合でもfalseに評価されます。

これを回避する方法はありますか?

回答:

回答№1は1

もし ListItems CheckBoxListのいずれかがaspnetで追加されます。コードの後ろにある.aspxページでは、ViewStateはサーバーに送信されていなくても、無効なチェックボックスがチェックされていることを確認します。

    protected void Button1_Click(object sender, EventArgs e)
{
List<string> selectedValues = new List<string>();
Label1.Text = "";
foreach (ListItem item in myCheckBoxList.Items)
{
if (item.Selected)
{
selectedValues.Add(item.Value);
Label1.Text += item.Value + "<br>";
}
}
}

そして例を完成させるために:

    <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
<br /><br />
<asp:CheckBoxList ID="myCheckBoxList" runat="server">
<asp:ListItem Text="Blueberry" Value="Blueberry"></asp:ListItem>
<asp:ListItem Text="Raspberry" Value="Raspberry"></asp:ListItem>
<asp:ListItem Text="Blackberry" Value="Blackberry"></asp:ListItem>
<asp:ListItem Text="Strawberry" Value="Strawberry" Enabled="false" Selected="True"></asp:ListItem>
<asp:ListItem Text="Gooseberry" Value="Gooseberry" Enabled="false" Selected="True"></asp:ListItem>
</asp:CheckBoxList>
<br /><br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

回答№2の場合は3

使用不可能な入力は決してサーバーに送信されないため、デフォルト値、つまりfalseに設定されます。あなたは使うことができます HiddenField それを各チェックボックスに関連付けて、それに基づいて値を設定します。