2015-01-20 2 views
-1

У меня есть 5 флажков в моем представлении, все настроены на непроверенные при загрузке на главной странице. У каждого из флажков есть связанное с ним текстовое поле.Проверка нескольких флажков в MVC

Один, один или несколько могут быть проверены в любой момент времени, который затем отправляется на мой контроллер.

На уровне контроллера мне бы хотелось знать, есть ли более эффективный метод определения того, какие из многих флажков были проверены.

На данный момент я делаю:

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 

Есть ли более эффективный способ сделать это, или я собираюсь провести следующие несколько часов, копирования и вставки :)

Спасибо

+0

Возможный дубликат [Как получить все CheckBoxes с помощью C#?] (Http://stackoverflow.com/questions/8516102/how-to-get-all-checkboxes-using-c) – melancia

+0

также http: // stackoverflow .com/questions/11130381/c-sharp-cleaner-way-to-check-for-checkbox-states? rq = 1 – dkiefer

+0

Также [Получение всех выбранных флажков из FormCollection] (http://stackoverflow.com/questions/ 3831606/get-all-selected-checkboxes-from-a-formcollection) – melancia

ответ

0

в случае, если вам нужно только знать, какие из них были проверены, вы только написать:

if(checkBox1 == true) 
{ 
    //code here 
} else 
{ 
    //code here 
} 
//////////////////////////// 
if(checkBox2 == true) 
{ 
    //code here 
} else 
{ 
    //code here 
} 
//////////////////////////// 
if(checkBox3 == true) 
{ 
    //code here 
} else 
{ 
    //code here 
} 
//////////////////////////// 

И продолжать этот путь,
Но если вам нужно знать точную комбинацию, вы должны сделать:

bool ch1 = checkBox1; 
bool ch2 = checkBox2; 
bool ch3 = checkBox3; 
bool ch4 = checkBox4; 
bool ch5 = checkBox5; 

foreach(bool chBoxChecked in Form form) 
{ 
    switch(chBoxChecked) 
    { 
     case true: 
      //...... 
      break; 
     case false: 
      //...... 
      break; 
    } 
} 

if(ch1&&ch2&&ch3&&ch4&&ch5) 
{ 
    //all checked true 
} else if(ch2&&ch3&&ch4&&ch5&&ch1=false) 
{ 
    //n.1 checked false 
} else if(ch1&&ch3&&ch4&&ch5&&ch2=false) 
{ 
    //n.2 checked false 
} else if(ch1&&ch2&&ch4&&ch5&&ch3=false) 
{ 
    //n3 false 
} else if(ch1&&ch2&&ch3&&ch5&&ch4=false) 
{ 
    //n4 false 
} else if(ch1&&ch2&&ch3&&ch4&&ch5=false) 
{ 
    //n5 false 
} else if(ch3&&ch4&&ch5&&ch1=false&&ch2=false) 
{ 
    //1,2 false 
} else if(ch2&&ch4&&ch5&&ch1=false&&ch3=false) 
{ 
    //1,3 false 
} else if(ch2&&ch3&&5&&ch1=false&&ch4=false) 
{ 
    //1,4 false 
} else if(ch2&&ch3&&ch4&&ch1=false&&ch5=false) 
{ 
    //1,5 false 
} else if(ch1&&ch4&&ch5&&ch2=false&&ch3=false) 
{ 
    //2,3 false 
} else if(ch1&&ch3&&ch5&&ch2=false&&ch4=false) 
{ 
    //2,4 false 
} else if(ch1&&ch3&&ch4&&ch2=false&&ch5=false) 
{ 
    //2,5 false 
} else if(ch1&&ch2&&5&&ch3=false&&ch5=false) 
{ 
    //3,5 false 
} else if(ch1&&ch2&&ch3&&ch4=false&&ch5=false) 
{ 
    //4,5 false 
} else if(ch1&&ch2&&ch3=false&&ch4=false&&ch5=false) 
{ 
    //only 1,2 true 
} else if(ch1&&ch3&&ch2=false&&ch4=false&&ch5=false) 
{ 
    //only 1,3 true 
} else if(ch1&&ch4&&ch2=false&&ch3=false&&ch5=false) 
{ 
    //1,4 true 
} else if(ch1&&ch5&&ch2=false&&ch3=false&&ch5=false) 
{ 
    //1,5 true 
} else if(ch2&&ch3&&ch2=false&&ch3=false&&ch4=false) 
{ 
    //2,3 true 
} else if(ch2&&ch4&&ch1=false&&ch3=false&&ch5=false) 
{ 
    //2,4 true 
} else if(ch2&&ch5&&ch1=false&&ch3=false&&ch4=false) 
{ 
    //2,5 true 
} else if(ch3&&ch4&&ch1=false&&ch2=false&&ch5=false) 
{ 
    //3,4 true 
} else if(ch3&&ch5&&ch1=false&&ch2=false&&ch4=false) 
{ 
    //3,5 true 
} else if(ch5&&ch4&&ch1=false&&ch2=false&&ch3=false) 
{ 
    //4,5 true 
} else if(ch1&&ch2=false&&ch3=false&&ch4=false&&ch5=false) 
{ 
    //only n.1 true 
} else if(ch2&&ch1=false&&ch3=false&&ch4=false&&ch5=false) 
{ 
    //only n.2 true 
} else if(ch3&&ch2=false&&ch1=false&&ch4=false&&ch5=false) 
{ 
    //only n.3 true 
} else if(ch4&&ch2=false&&ch3=false&&ch1=false&&ch5=false) 
{ 
    //only n.4 true 
} else if(ch5&&ch2=false&&ch3=false&&ch4=false&&ch1=false) 
{ 
    //only n.5 true 
} 

Это был сумасшедший, чтобы сделать это для Вас! >>> :) Но может быть и другой способ, которого я не знаю. ПРИМЕЧАНИЕ. Я не уверен, что цикл foreach используется правильно, я не очень часто его использую.

Имейте славный день!

0

Ваш вопрос немного расплывчатый, поэтому я не знаю точно, что вы пытаетесь, но у меня есть MVC-представление, которое отображает несколько текстовых полей и флажков. В моей модели у меня есть список элементов, где каждый элемент представляет собой одну строку в форме (например, метку, текстовое поле и флажок). На обратной стороне я просто перебираю список, чтобы обработать флажки.

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); 

Это даст «х» значение для каждой комбинации (простой двоичный), так что 1 = c1, 3 = c1 & c2, 11 = c1 & c2 & c4. Это гораздо более читаемо, и если вы добавите шестой и седьмой флажки в будущем, у вас не будет сотни строк кода для добавления.

Смежные вопросы