ASP.NET MVC: используйте Html.Partial или Html.Action?

У меня есть сайт с панелью навигации, определенной в макете. Панель навигации используется в нескольких представлениях сайта и имеет динамический контент, который генерируется из нескольких запросов в базе данных.

Мне интересно, что лучше всего отобразить это меню (определенное в частичном виде). ​​

Насколько я знаю, я могу сделать это двумя способами, с некоторыми преимуществами и недостатками для каждого из них:

Использование Html.Action:  + Он полностью независим от представления, которое использует макет  - Он добавляет дополнительный запрос для отображения раздела страницы  - Я добавляю метод Action, который возвращает Partial view, который не вызывается из Ajax.

Использование Html.Partial:  + Простой запрос для отображения всего представления  - Каждая модель представления должна содержать информацию, необходимую для панели навигации

Я бы очень благодарен вам за понимание, так как у меня есть несколько сценариев, подобных этому на моем сайте, и я не уверен, какой из них лучший.

Спасибо!

Ответ 1

Я бы использовал Html.Action, особенно если это меню содержит некоторые динамические данные, которые извлекаются из базы данных. Преимущество состоит в том, что вы можете полностью отделить эту выборку в совершенно отдельном действии от основного. Кроме того, вывод дочерних действий можно кэшировать, украсив их атрибутом [OutputCache]. Делая это, вы можете уменьшить нагрузку на свою базу данных, если данные не меняются довольно часто.

Он добавляет дополнительный запрос для отображения раздела страницы

Вы, должно быть, неправильно поняли об этом. Дополнительного запроса от клиента нет. Все обслуживается по одному запросу. Существует дополнительный экземпляр контроллера и выполнение действия, но не новый HTTP-запрос от клиента. Это как если бы два действия контроллера выполнялись в одном запросе и их результат был объединен в одну HTML-страницу, отправленную клиенту.