检查MVC中的多个复选框

时间:2015-01-20 15:04:54

标签: c# asp.net-mvc checkbox

我的视图中有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

是否有更有效的方法来执行此操作,或者我将在接下来的几个小时内复制和粘贴:)

由于

1 个答案:

答案 0 :(得分:0)

你的问题有点模糊,所以我不知道你正在尝试什么,但我有一个MVC视图,呈现多个文本框和复选框。在我的模型中,我有一个项目列表,其中每个项目是一行' row'在表格上(即标签,文本框和复选框)。在回帖后,我只需迭代我的列表来处理复选框。

Sample Page

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

如果要检查与其他复选框相关的每个复选框的状态,请尝试以下操作:

    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。这更具可读性,如果您将来添加第六个和第七个复选框,您将无法添加数百行代码。