9
votes

Puis-je boucler à travers une collection.Request.form?

J'ai des cases à cocher avec un identifiant unique. Est-il possible de trouver toutes les cases à cocher + Uniquenum dans une collection de formulaire?

quelque chose comme - xxx


0 commentaires

5 Réponses :


41
votes

Non.

Au lieu de cela, vous pouvez faire boucler toutes les touches et vérifier si elles commencent avec Cochez la case code>. p>

Par exemple: P>

foreach(string key in Request.Form) {
    if (!key.StartsWith("checkbox")) continue;
    ...
}


1 commentaires

Pas par moi ... c'était parfait! Merci!



4
votes

ou quelque chose comme ça xxx


0 commentaires

1
votes

Vous devriez être capable de le faire avec Linq (cela devrait fonctionner, n'a pas été testé): Je suppose aussi que l'ID des cases à cocher est "Cochez la case [ID]". BTW, les identifiants en double dans les champs de formulaire sont mauvais mauvais mauvais.

var checkboxes = (from key in Request.Form.AllKeys where key = "checkbox" + UniqueIDNum)
foreach(string key in checkboxes)
{
     //do stuff
}


1 commentaires

C'est inutilement lent. ALLKEYS copie un tableau.



1
votes
        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Index(FormCollection fc)
        {   
            string a = fc["hdn_1"].ToString(); // if you know for sure that it will have a value.
            string lbl_1 = null;

            foreach (var key in fc.AllKeys)
            {
                if (key.Contains("txt_1"))
                {
                    lbl_1 = fc["txt_1"].ToString();
                }
            }
         }
Hope this helps.

0 commentaires

0
votes

Je devais faire cela dans vb.net, après avoir travaillé avec vb.net en années et même pour ne pas avoir travaillé avec beaucoup, et j'ai utilisé la réponse de Josh Wolf pour obtenir ce qui suit:

Dim checkedOrders As IEnumerable(Of String) = From key In Request.Form.AllKeys Where key.StartsWith("chk")

If checkedOrders.Count > 0 Then
   ' do stuff, loop through checkedOrders, etc
End If


0 commentaires