7
votes

Obtenir toutes les cases à cocher sélectionnées d'un formulaire

J'ai une forme qui contient un tas de cases à cocher entières et d'autres types de contrôle. J'ai besoin de récupérer les noms de chaque case sélectionnée.

Quelle est la meilleure façon de faire cela? Puis-je le faire avec une requête Linq peut-être?

Donc, dans pseudocode, je cherche à faire quelque chose comme ceci: xxx

update Il semble que la façon dont MVC soumet des cases à cocher est différente de la manière dont une forme normale se comporterait, car un champ caché est également rendu. J'ai trouvé les détails ici: Comment gérer les cases à cocher dans ASP.NET Les formes MVC?

Anywho, je l'ai travaillé avec l'aide de ce fil et la réponse de la buildstarté ci-dessous. Le code suivant a fait le tour. xxx


2 commentaires

Merci pour cette information. J'utilise normalement simplement la liaison de modèle intégrée et je n'ai jamais vraiment examiné les détails Qu'est-ce qui est sortie au HTML en ce qui concerne les cases à cocher.


Nice exemple, je viens de mettre à jour le code dans mon projet pour cela.


3 Réponses :


5
votes

Malheureusement, ce type d'information n'est pas disponible dans la collection. Toutefois, si vous préparez toutes vos cases à cocher avec quelque chose comme code> Vous pouvez exécuter une requête comme xxx avant

car Seules les valeurs vérifiées seront publiées, vous n'avez pas besoin de valider qu'ils sont vérifiés. P>

Voici une seule fois les valeurs vérifiées p>

var names = formCollection.AllKeys.Where(c => c.StartsWith("test") && 
                        formCollection.GetValue(c) != null &&
                        formCollection.GetValue(c).AttemptedValue == "1");


3 commentaires

Je reçois définitivement toutes les cases à cocher publiées, pas seulement les cochées.


C'est étrange. Un test rapide révèle que ce n'est pas le cas. Pourrait être spécifique HTML, causant cela. Mais le Le formulaire ne semble pas fonctionner pour moi. Cependant j'ai mis à jour la réponse


Je l'ai compris maintenant. Mise à jour ma question avec quelques détails supplémentaires. Merci pour ton aide :)



0
votes

C'est l'une des anciennes questions non actives depuis des années, mais je suis tombé dessus. Mon problème était que j'ai une gamme de cases à cocher - disons que le nom est "isvalid" et voulait obtenir le statut de chacune des cases à cocher (mon projet était en MVC 5). Sous forme Soumettre, j'ai fait la boucle de la collection de formulaires et j'ai obtenu les valeurs comme ... xxx pré>

puisque sur le formulaire post la valeur de champ masqué a également été enregistrée avec les cases à cocher cochées; Le tableau contenait une valeur supplémentaire de 'Faux' pour une case à cocher cochée uniquement. Se débarrasser de ceux que j'ai utilisés après la fonction; J'espère que cela aide quelqu'un et si mon approche est fausse, une meilleure solution me serait utile! P>

sV = FixCheckBoxValue(sV);

        private string[] FixCheckBoxValue(string[] sV)
    {
        var iArrayList = new List<string>(sV);

        for (int i = 0; i < iArrayList.Count; i++)
        {
            if (iArrayList[i].ToString() == "true")
            {
                iArrayList.RemoveAt(i + 1);
            }                
        }
        return iArrayList.ToArray();
    }


0 commentaires

0
votes

Répondre à la publication sur le tableau des cases à cocher, vous pouvez initialement filtrer les cases à cocher par nom.

var keys = formCollection.AllKeys.Where(x => x.StartsWith("IsValid");


0 commentaires