Синтезировать несколько методов действий в MVC

#asp.net-mvc

#asp.net-mvc

Вопрос:

У нас есть приложение в стиле информационной панели с множеством отдельных фрагментов экрана, которые загружаются асинхронно. Каждый из этих битов действительно имеет смысл как свое собственное действие на контроллере страницы. Однако данные будут загружаться быстрее, если мы уменьшим количество http-запросов до 1. Я рассматриваю возможность создания действия, которое просто возвращает комбинацию результатов нескольких более мелких действий, чтобы веб-клиент мог ПОЛУЧАТЬ действия по отдельности или вместе. Однако это похоже на готовое решение общей проблемы, поэтому мне интересно, есть ли встроенная поддержка для объединения действий таким образом, о которой я не знаю. Кто-нибудь?

Ответ №1:

В вашем базовом представлении вы можете использовать Html.RenderAction() метод для отображения полностью отдельных действий от другого действия.

Ответ №2:

Почему бы вам просто не использовать ViewModel, содержащий все данные, необходимые для вашей панели мониторинга, а затем создать несколько частичных представлений, снабдив их данными из ViewModel?

У меня также есть панель мониторинга в моем проекте, я сделал это таким образом, и я доволен решением. У меня есть DashboardController, и его индексное действие просто принимает ViewModel (который объединяет все необходимые данные) и отправляет его для просмотра. В этом представлении у меня есть несколько частичных представлений (каждому из них нужна своя модель), и я передаю им данные из моей ViewModel. Затем внутри этого частичного представления находятся ссылки на конкретные действия (например, CRUD для конкретных моделей).
Когда вы делаете это таким образом, вы можете легко создавать частичные представления для конкретных моделей (задача, проект, пользователь.. в моем случае). А затем просто используйте их как части в вашем окончательном макете. Моя ViewModel содержит коллекции задач, проектов и пользователей, которые я затем просто передаю соответствующим частичным представлениям.