2009-07-02 6 views
1

Я получаю длинную строку отмеченных флажков html checkbox (Request.Form ["mylist"] возвращает Value1, Value2, Value3 ....) в сообщении формы на странице ASP.NET 2.0.checkbox array loop in C#

Теперь я просто хочу их зацикливать, но я не знаю, какая наилучшая практика для цикла этого массива. Я пытаюсь сделать что-то вроде этого:

foreach (string Item in Request.Form["mylist"]){ 
    Response.Write(Request.Form["mylist"][Item] + "<hr>"); 
} 

Но это не работает.

ответ

6

Вы должны разделить строку, разделенную запятой. Попробуйте

string myList = Request.Form["myList"]; 
if(string.isNullOrEmpty(myList)) 
{ 
    Response.Write("Nothing selected."); 
    return; 
} 
foreach (string Item in myList.split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries)) 
{ 
    Response.Write(item + "<hr>"); 
} 
0

Я рекомендую не использовать Split в значениях формы, чтобы предотвратить разделение значений запятыми.

string myList = Request.Form.GetValues("myList"); 
foreach (var Item in myList) 
{ 
    Response.Write(item + "<hr>"); 
} 
0

Для завершения и отладки ответ Dolcevita, которая имеет важное и правильную точку ...

Учитывая следующий пример HTML

<p>Select numbers for a sum:</p> 
<input type="checkbox" id="c1" name="myList" value="1"/><label for="c1">1</label> 
<input type="checkbox" id="c2" name="myList" value="2"/><label for="c2">2</label> 
<input type="checkbox" id="c3" name="myList" value="3"/><label for="c3">3</label> 

вы можете прочитать выбранные чекбоксы по

var sum = 0; 
var selectedNumbers = Request.Form.GetValues("myList"); 

if (selectedNumbers != null) 
{ 
    foreach (var selectedNumber in selectedNumbers) 
    { 
     // my example uses integers 
     var number = int.Parse(selectedNumber); 
     sum += number; 
    } 
} 

Response.Write("<p>Sum: " + sum + "</p>");