2011-11-30 11 views
6

Hago un uso intensivo del ViewBag en mi aplicación MVC, ¿esto se considera una mala práctica? No estoy seguro de si perder tiempo creando ViewModels (sin embargo, pensé que era más adecuado para MVVM en lugar de MVC) o seguir usando el ViewBag en gran medida. ¿Cuáles son los argumentos a favor y en contra de esto? Ejemplo método controlador volvería es el modelo (generalmente una entidad de dominio sencillo), así como las siguientes llamadas a la ViewBag:Uso intensivo de 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"; 

Respuesta

9

Preguntas como éstas generalmente obtendrán respuestas de ambos lados de la valla. Muchas personas sienten que usar ViewBag como este es un mal diseño (yo incluido). Hace que tus controladores sean menos comprobables. Sus vistas no están fuertemente tipadas, etc.

Por lo general, es una buena práctica usar un ViewModel. En lugar de hacer que su modelo sea un modelo de dominio, cree un modelo que sea específico para la vista que está mostrando. De esta forma, puede personalizarse al 100% según lo que necesite para esta vista específica. Descubrirá que realmente no necesita usar ViewBag mucho una vez que hace esto. A veces puede crear una gran cantidad de código adicional (un modelo de vista por vista), pero el código es bastante simple y hacer un cambio en una vista no romperá ninguna otra.

+0

Gracias, esto era más o menos lo que estaba buscando. – Paul

+0

Nuevamente, recuerde que preguntas como estas son muy subjetivas. Lo que funciona para usted podría no funcionar para otros y lo que funciona para otros podría no funcionar para usted. Solo estoy respondiendo desde mi propio punto de vista :) – Dismissile

0

Por qué no usar persona como su modelo? De esa manera puede usar una vista fuertemente tipada. Mi opinión personal es que el ViewBag es bastante mágico y aunque funciona a pequeña escala donde eres el único desarrollador, en aplicaciones y proyectos más grandes te estás obligando a que todos recuerden cuáles son las cadenas mágicas. Además, no obtendrá la seguridad de tipo que usaría un modelo y una vista fuertemente tipada.

Cuestiones relacionadas