Domanda

Faccio uso pesante del ViewBag nella mia applicazione MVC, è questa pratica male considerato? Sono incerto se per trascorrere del tempo la creazione di ViewModels (però ho pensato che era più adatto a MVVM piuttosto che MVC) o continuare a utilizzare il ViewBag pesantemente. Quali sono gli argomenti a favore e contro questo? metodo di controllo esempio potrebbe restituirlo del modello (in genere una semplice entità del dominio), così come le seguenti chiamate al 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";
È stato utile?

Soluzione

Domande come queste di solito ottenere risposte da entrambi i lati della barricata. Molte persone ritengono che l'utilizzo di ViewBag come questa è una cattiva progettazione (me compreso). Rende i controller meno verificabile. I suoi punti di vista non sono fortemente tipizzati, ecc.

Di solito è una buona pratica di utilizzare un ViewModel. Invece di avere il vostro modello di essere un modello di dominio, creare un modello che è specifico per la vista che si sta visualizzando. In questo modo si può essere al 100% personalizzati su misura per ciò che è necessario per questa vista specifica. Troverete che non si ha realmente bisogno di usare ViewBag molto una volta che si esegue questa operazione. A volte può creare un sacco di codice aggiuntivo (una vista del modello per view), ma il codice è piuttosto semplice e fare una modifica a un punto di vista non si romperà tutti gli altri.

Altri suggerimenti

Perché non usare persona come modello? In questo modo è possibile utilizzare una vista fortemente tipizzato. La mia opinione personale è che il ViewBag è praticamente 'archi magici' e mentre funziona bene su piccola scala in cui sei l'unico dev, nelle applicazioni e progetti si sono praticamente costringendo tutti a ricordare ciò che tutte le stringhe magici sono più grandi. Inoltre, non si ottiene la sicurezza tipo che si sarebbe utilizzando un modello e una vista fortemente tipizzato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top