Question

Je fais un usage intensif de la ViewBag dans mon application MVC, est-ce considéré comme une mauvaise pratique? Je ne suis pas sûr de savoir si passer du temps à créer ViewModels (mais je pensais qui était plus adapté à MVVM plutôt que MVC) ou continuer à utiliser le ViewBag fortement. Quels sont les arguments pour et contre cela? Exemple méthode du contrôleur retournerait modèle de ce (généralement une simple entité de domaine), ainsi que les appels suivants à la ViewBag:

            ViewBag.TotalItems = data.Count();
        ViewBag.FilteredItems = gridFilters;
        ViewBag.Action = "Events";
        ViewBag.Area = "People";
        ViewBag.EntityID = person.EntityID;
        ViewBag.OrganisationID = ID;
        ViewBag.Name = string.Format("{0} {1}", person.FirstName, person.LastName);
        ViewBag.IsEnabled = person.IsEnabled;
        ViewBag.EntityID = person.EntityID;
        ViewBag.Favourited = users.IsOnUserFavourites(person.EntityID);

        ViewBag.Columns = userColumns;

        ViewBag.Title = "Person : " + string.Format("{0} {1}", person.FirstName, person.LastName) + " - Events";
Était-ce utile?

La solution

Des questions comme celles-ci généralement obtenir des réponses des deux côtés de la clôture. Beaucoup de gens pensent que l'utilisation ViewBag comme celui-ci est une mauvaise conception (moi y compris). Il rend vos contrôleurs moins testable. Vos points de vue ne sont pas fortement typés, etc.

Il est généralement une bonne pratique d'utiliser un ViewModel. Au lieu d'avoir votre modèle soit un modèle de domaine, créer un modèle spécifique à la vue que vous affichez. De cette façon, il peut être 100% taillé sur mesure pour ce que vous avez besoin pour ce point de vue spécifique. Vous constaterez que vous n'avez pas vraiment besoin d'utiliser beaucoup ViewBag une fois que vous faites cela. Il peut parfois créer beaucoup de code supplémentaire (un modèle de vue par vue), mais le code est assez simple et faire un changement à un point de vue ne cassera pas les autres.

Autres conseils

Pourquoi ne pas utiliser personne comme modèle? De cette façon, vous pouvez utiliser une vue fortement typé. Mon opinion personnelle est que le ViewBag est à peu près « cordes magiques » et tout cela fonctionne bien sur une petite échelle où vous êtes le seul dev, dans les grandes applications et les projets que vous êtes à peu près obligent tout le monde de se rappeler ce que toutes les chaînes de magie sont. , Vous obtenez également pas la sécurité de type que vous le feriez avec un modèle et une vue fortement typé.

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