Pregunta

Hago un uso intensivo de la bolsa de vista en mi aplicación MVC, ¿se considera esto mal práctica? No estoy seguro de si pasar tiempo creando modelos de vista (sin embargo, pensé que era más adecuado para MVVM en lugar de MVC) o continuar usando la bolsa de vista en gran medida. ¿Cuáles son los argumentos a favor y en contra de esto? El método del controlador de ejemplo devolvería su modelo (generalmente una entidad de dominio simple), así como las siguientes llamadas a la bolsa de vista:

            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";
¿Fue útil?

Solución

Preguntas como estas generalmente obtendrán respuestas de ambos lados de la cerca. Muchas personas sienten que usar Viewbag como este es un mal diseño (incluido yo mismo). Hace que sus controladores sean menos comprobables. Sus puntos de vista no se escriben fuertemente, etc.

Por lo general, es una buena práctica usar un ViewModel. En lugar de que su modelo sea un modelo de dominio, cree un modelo específico para la vista que está mostrando. De esa manera, puede estar 100% personalizado para lo que necesita para esta vista específica. Descubrirá que realmente no necesita usar Viewbag mucho una vez que haga esto. A veces puede crear un montón de código adicional (modelo de vista por vista), pero el código es bastante simple y hacer un cambio en una vista no romperá a ningún otro.

Otros consejos

¿Por qué no usar la persona como su modelo? De esa manera, puede usar una vista fuertemente escrita. Mi opinión personal es que la bolsa de vista es más o menos 'cuerdas mágicas' y, aunque funciona bien a pequeña escala donde eres el único desarrollador, en aplicaciones y proyectos más grandes estás obligando a todos a recordar cuáles son todas las cadenas mágicas. Además, no tiene seguridad de tipo que utilizaría un modelo y una visión fuertemente escrita.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top