В вашем примере, когда вы отправляете форму с true, true, true, false, false и вы получаете
true,false,true,false,true,false,false,false
Интересно отметить, что вы на самом деле не возвращаете восемь значений, а пять массивов, которые просто выглядят так, потому что все значения объединены.
Я знаю, что вы просили не получать цикл для вашего ответа, но я могу использовать его, чтобы продемонстрировать, что на самом деле происходит здесь:
foreach (string key in postedForm.AllKeys) {
// "value" will contain a joined/comma-separated list of ALL values,
// including something like "true,false" for a checked checkbox.
string value = postedForm[key].GetValue;
// "values" will be an array, where you can access its first element,
// e.g., values[0], to get the actual intended value.
string[] values = postedForm.GetValues(key);
}
Таким образом, для ваших отмеченных блоков вы получите массив значений с двумя элементами, а для непроверенных блоков вы получите только одноэлементный массив.
Таким образом, чтобы ответить на ваш вопрос как вы преодолеете эту проблему , ответ заключается в использовании GetValues, а не GetValue, и в том, что ваши опубликованные поля представляют собой массивы, а не строки.
Удачи!