MVC ViewBag: доступ к БД с ViewBag в контроллере быстрее, чем прямой доступ в View - PullRequest
0 голосов
/ 09 августа 2011

Мне интересно, что быстрее. Должен ли я хранить информацию, которую я запрашивал из БД, в ViewBag, а затем обращаться к ней и отображать ее в View, или я должен сделать запрос непосредственно в View. Контроллер - это средний уровень в MVC, поэтому мне кажется логичным, что доступ к БД в контроллере должен быть быстрее.

Пример:

1) В контроллере я получаю доступ к БД и помещаю информацию в ViewBag, чтобы я мог отобразить ее в View.

Контроллер:

EVENT e = db.EVENT.Find(id);
ViewBag.event = e;

if (e.poster_id != null)
{
    poster = e.DATA.path;
}
ViewBag.dict_poster = poster;

вид:

<p>POSTER: @ViewBag.dict_poster;</p>

2) В Контроллере я помещаю только общие данные из БД в ViewBag и обращаюсь к ним в View.

Контроллер:

EVENT e = db.EVENT.Find(id);
ViewBag.event = e;

вид:

<p>
    @if(ViewBag.event.poster_id != null)
    {
        @ViewBag.event.DATA.path;
    }
</p>
  • Что лучше и целесообразнее использовать? Что быстрее?
  • Что, если у меня очень разветвленная БД и мне нужно все хранить в «ViewBag.e», лучше и быстрее хранить отдельные значения в ViewBags и доступ к ним в View или более быстрый прямой доступ из View?
  • А как насчет списков? (сохранение информации БД в списке, помещение ее в ViewBag и последующий доступ к ней в View)

Я благодарен за ваши ответы и добавленные объяснения ....

1 Ответ

2 голосов
/ 09 августа 2011

Вы не должны обращаться к своему слою данных непосредственно из представления, это должно быть сделано в контроллере.Кроме того, рассмотрите возможность передачи строго типизированной модели представления вашему представлению, а не используйте ViewBag.

См. http://theminimalistdeveloper.com/2010/08/21/why-when-and-how-to-use-typed-views-and-viewmodel-pattern-in-asp-net-mvc/ о причинах использования моделей представления в MVC.

...