Lors de ma première entreprise dans ASP.NET MVC, je rencontre quelques situations où j'ai des listes déroulantes qui sont limitées dans leur but à une seule vue. Un bon exemple est que j'ai un formulaire d'inscription où un utilisateur doit mettre dans leur sexe et date de naissance. Une fois entré, nulle part dans l'application il est changé.Meilleur endroit pour mettre des générateurs SelectListItem dans l'application ASP.NET MVC
Pour le genre, je construis les sexes et pour la date de naissance, je construis les pièces individuelles (mois, jours et années) pour leurs listes déroulantes respectives. Maintenant, j'ai les méthodes qui génèrent ces valeurs dans le contrôleur qui renvoie cette vue (dans le constructeur). Je ne peux pas m'empêcher de penser qu'il y a une légère odeur de code venant de cette façon, car toutes les méthodes du contrôleur ne renvoient pas toujours la vue (peut-être à cause des appels REST, etc.)). Je ne pense pas que générer à chaque fois est l'approche à adopter.
Quelles méthodes les gens utilisent-ils pour médier ceci? Je pense à une sorte de classe avec des méthodes statiques qui peuvent être appelées directement à partir de l'affectation (<% = Html.Dropdown ("myitem", GeneratorMethod())%>). Le seul problème que je peux éviter de faire de cette façon est de savoir comment sélectionner à nouveau un élément dans le cas où la vue est retournée (en raison d'une erreur de validation, par exemple).
Un commentaire serait apprécié!
Cela a beaucoup de sens. J'avais eu l'idée d'ajouter ces valeurs dans mon modèle (je n'utilise pas le modèle intégré, mais une implémentation de référentiel externe) et cela me porte à croire que ce sera probablement la meilleure approche. Mes implémentations de référentiel incluent la mise en cache des entités, donc après le premier appel à froid, il sera mis en cache. Je ne suis toujours pas sûr du processus de re-sélection, mais je suis sûr que je peux comprendre maintenant que je pointe dans la bonne direction. Merci! –