2009-07-02 7 views
1

Je reçois une longue chaîne de valeurs checkbox html vérifiées (Request.Form ["mylist"] return Value1, Value2, Value3 ....) sur le poste dans la page ASP.NET 2.0.checkbox array loop in C#

Maintenant, je veux simplement les boucler mais je ne sais pas quelle est la meilleure pratique pour boucler ce tableau de chaînes. J'essaie de faire quelque chose comme ceci:

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

Mais cela ne fonctionne pas.

Répondre

6

Vous devez diviser la chaîne séparée par des virgules. Essayez

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

Je recommande de ne pas utiliser les valeurs de séparation dans le formulaire pour éviter de diviser les valeurs par des virgules.

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

Pour compléter et corriger la réponse de DolceVita, qui a un point important et correct ...

Compte tenu de l'exemple suivant 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> 

vous pouvez lire les cases à cocher sélectionnées par

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