【问题标题】:Checking multiple checkboxes in MVC在 MVC 中检查多个复选框
【发布时间】:2015-01-20 15:04:53
【问题描述】:

我的视图中有 5 个复选框,在初始页面加载时全部设置为未选中。每个复选框都有一个与之关联的文本框。

可以在任何时候检查一个、无或多个,然后将其发送到我的控制器。

在控制器级别,我很想知道是否有更有效的方法来找出许多复选框中的哪一个已被选中。

目前,我正在做:

if ((checkBox1 == true ) && (checkBox2 == true) && (checkBox3 = true) && (checkBox 4 = true) && (checkBox5 == true))
{
do something with all the textBoxes associated with the checkBoxes that are checked
}
elseif ((checkBox1 == true ) && (checkBox2 == true) && (checkBox3 = true) && (checkBox 4 = true))
{
do something with all the textBoxes associated with the checkBoxes that are checked
}
......and so on

有没有更有效的方法来做到这一点,或者我要花接下来的几个小时复制和粘贴:)

谢谢

【问题讨论】:

标签: c# asp.net-mvc checkbox


【解决方案1】:

您的问题有点含糊,所以我不知道您到底在尝试什么,但我有一个 MVC 视图,可以呈现多个文本框和复选框。在我的模型中,我有一个项目列表,其中每个项目都是表单上的一个“行”(即标签、文本框和复选框)。在回发时,我只需迭代我的列表以处理复选框。

此页面允许包含/排除某个地点或覆盖其名称... 在我粘贴示例之前,这是您正在做的事情吗? (特别是您的任何复选框都知道其他复选框吗?)

如果您想检查每个复选框相对于其他复选框的状态,请尝试以下操作:

    bool c1 = true;  // checkbox1.Checked
    bool c2 = true;  // checkbox2.Checked
    bool c3 = false; // etc
    bool c4 = true;

    BitArray arr = new BitArray(new bool[4] { c1, c2, c3, c4 });
    byte[] bits = new byte[4];
    arr.CopyTo(bits, 0);
    int x = BitConverter.ToInt32(bits, 0);

这将为每个组合(简单二进制)赋予“x”一个值,因此 1=c1、3=c1 & c2、11=c1 & c2 & c4。这更具可读性,如果您将来添加第六个和第七个复选框,您将无需添加数百行代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    相关资源
    最近更新 更多