En utilisant une liste dynamique des cases à cocher dans une vue, comment créer le modèle

StackOverflow https://stackoverflow.com/questions/2022267

  •  19-09-2019
  •  | 
  •  

Question

J'ai un mvc asp 2 app lication où je veux afficher une liste de cases à cocher qu'un utilisateur peut sélectionner, sur la base d'une liste d'enregistrements dans une base de données. Pour afficher la liste de mon modèle contient un objet de la liste et la vue a une foreach et sorties Html.CheckBox pour chaque élément de la liste.

Y at-il un moyen d'obtenir le modèle rempli avec les cases sélectionnées, étant donné que le modèle ne peut pas avoir des propriétés spécifiques pour chaque case à cocher, car la liste est dynamique? Ou dois-je itérer manuellement les formulaires moi-même des variables?

Modifier: détails supplémentaires selon le commentaire de sabanito Ainsi, dans une vue simple / scénario de modèle, si mon modèle avait une propriété appelée Propriété1, alors mon avis émis une zone de texte pour Propriété1, lorsque le formulaire est transmis via un bouton d'envoi, le cadre mvc remplira automatiquement un modèle avec Propriété1 contenant le texte qui a été conclu dans la zone de texte et passer ce modèle à l'action des contrôleurs.

Parce que je traite une liste dynamique d'options, l'utilisateur peut vérifier, je ne peux pas écrire explicites propriétés booléennes dans mon modèle et créer explicitement les cases à mon avis. Étant donné que ma liste est dynamique, je me demande s'il y a des façons de créer mon modèle et vue afin que le cadre mvc est en mesure de remplir correctement le modèle lorsque le formulaire est affiché.

Était-ce utile?

La solution

Voici ce que je ferais:

Vous rencontrez des problèmes la génération dynamique de la case à cocher?

Sinon, créez une propriété sur votre ViewModel qui est:

public List<string> CheckboxResults { get; set; }

Lorsque vous générez votre case à cocher dans la vue de faire en sorte qu'ils partagent tous le nom = « CheckboxResults ». Lorsque MVC afficher votre ViewModel en tant que paramètre de la méthode d'action, il se liera automatiquement et de mettre tous les résultats « de CheckboxResults » dans la liste (ainsi que vos autres propriétés ViewModel). Maintenant, vous avez une liste dynamique basée sur lequel votre utilisateur de case cochée que vous pouvez envoyer à votre DomainModel ou ailleurs.

trucs assez cool. Faites-moi savoir si vous rencontrez des problèmes la génération dynamique de la case à cocher, c'est le genre d'une question séparée que le modèle se liant à une liste.

Autres conseils

Utilisez un ViewModel qui reflète votre point de vue exactement et mapper votre modèle de domaine (s) au viewmodel.

Au début, il semble souvent approprié d'utiliser des modèles de domaine directement dans la vue, sans autre raison que celle qu'ils sont simples à utiliser. Cependant, la vue devient plus complexe au fil du temps, on finit par mettre une TONNE de logique conditionnelle à votre point de vue, et finir avec des spaghettis. Pour remédier à cela, nous créons généralement un ViewModel qui est en corrélation 1: 1 avec la vue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top