Вопрос

Я широко использую Viewbag в моем приложении MVC, это считается плохой практикой? Я не уверен, что тратить время на создание ViewModels (однако я думал, что это больше подходит для MVVM, а не MVC) или продолжать сильно использовать Viewbag. Каковы аргументы для и против этого? Пример метода контроллера будет возвращать его модель (как правило, простой доменной объект), а также следующие вызовы 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";
Это было полезно?

Решение

Подобные вопросы обычно получают ответы с обеих сторон забора. Многие люди считают, что использование Viewbag, подобного этому, является плохим дизайном (включая меня). Это делает ваши контроллеры менее проверяемыми. Ваши взгляды не сильно напечатаны и т. Д.

Обычно это хорошая практика, чтобы использовать ViewModel. Анкет Вместо того, чтобы ваша модель была моделью домена, создайте модель, которая является специфической для представления, которое вы отображаете. Таким образом, это может быть на 100% индивидуально адаптировано к тому, что вам нужно для этого конкретного представления. Вы обнаружите, что вам не нужно много использовать Viewbag, когда вы это сделаете. Иногда он может создать много дополнительного кода (одна модель представления на представление), но код довольно прост, и внесение изменения в одно представление не сломает ни одного другого.

Другие советы

Почему бы не использовать человека в качестве вашей модели? Таким образом, вы можете использовать сильно напечатанный вид. Мое личное мнение заключается в том, что Viewbag в значительной степени «волшебные струны», и, хотя он хорошо работает в небольших масштабах, где вы единственный разработчик, в более крупных приложениях и проектах, вы в значительной степени заставляете всех вспомнить, каковы все волшебные струны. Кроме того, вы не получаете безопасность типа, которую вы бы использовали модель, и сильно напечатанный вид.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top