Question

Je me demande où les gens créent leur SelectList - dans l'action ou la vue.

Je l'ai vu des exemples à la fois et celui qui me fait le plus de sens fait dans l'action et ont le modèle de vue ont une propriété de type SelectList.

D'autre part, j'ai vu des exemples où les gens ont le modèle de vue ont une propriété de SelectList et le SelectList est peuplé dans le modèle de vue (que ce soit dans le constructeur ou via le chargement paresseux). J'aime cette idée que cela signifie qu'il ya moins de code dans mes actions ...

En bref, je me demandais ce que les gens font atm.

Vive Anthony

Était-ce utile?

La solution

Créez votre SelectList dans le contrôleur (en regardant votre liste d'articles de votre référentiel de modèles), et le transmettre à la vue soit comme un objet ViewData, ou dans le cadre de votre ViewModel fortement typé.

Autres conseils

ESt un aspect spécifique à la présentation, donc je préfère le faire dans la vue, à l'aide d'un assistant Html. Donc, je passe une collection à la vue et utiliser une méthode d'aide HTML pour cartographier les éléments à SelectListItems. La méthode pourrait ressembler beaucoup à ceci:

public static IList<SelectListItem> MapToSelectItems<T>(this IEnumerable<T> itemsToMap, Func<T, string> textProperty, Func<T, string> valueProperty, Predicate<T> isSelected)
{
    var result = new List<SelectListItem>();

    foreach (var item in itemsToMap)
    {
        result.Add(new SelectListItem
        {
            Value = valueProperty(item),
            Text = textProperty(item),
            Selected = isSelected(item)
        });
    }
    return result;
}

Cordialement.

Je crée généralement mon SelectList dans la couche d'action ou d'un service et de le transmettre à mon avis via ViewData. Je l'ai aussi fait une partie d'un modèle de vue et une vue fortement typé. Les deux façons de créer dans la couche d'action ou un service bien.

Je l'SelectList exposé comme propriété dans le modèle de vue et le remplir dans l'action à l'aide du dépôt nécessaire. Je pense que le code qui interagit directement avec les dépôts doit être celui qui est également responsable avec peuplant, que ce soit les actions de contrôleur ou couche de service ou tout autre chose.

Je ne pense pas que peuplant la liste directement à partir du modèle de vue est une bonne idée, car cela nécessiterait le modèle de vue d'avoir une dépendance de dépôt et faire des interactions de base de données et le modèle de vue ne devrait pas être responsable de ce genre de les choses.

Vous pouvez également créer un objet spécial distinct, appelé Initializer ou quelque chose comme ça, qui fait tout le peuplement et initialisations, si vous avez plusieurs champs SelectList et que vous voulez garder vos actions plus propre code.

Ni, créez dans une catégorie distincte, regardez ici Comment Voir la carte du modèle Retour au modèle de domaine dans une action pOST?

J'utilise une interface IBuilder dans le contrôleur et faire tout le bâtiment des entités / viewmodels dans la mise en œuvre de ce constructeur

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