Если для обоих частичных представлений требуются уже определенные модели представлений, то страница, на которой размещены эти частичные представления, должна каким-либо образом предоставлять модели представлений. Легко представить, как IEnumerable<ProfileViewModel>
должен быть предоставлен на страницу, содержащую информацию, так как контактная информация, вероятно, поступает из серверной части. ContactViewModel
содержит какие-либо данные? Если нет, возможно, вы сможете создать его на месте в представлении содержащей страницы и избежать передачи только IEnumerable<ProfileViewModel>
.
В противном случае содержащее представление должно получить как IEnumerable<ProfileViewModel>
, так и ContactViewModel
. Вариант, к которому я бы склонялся, - это действительно определение новой модели представления, в которой есть элементы данных для этих двух значений. Это несколько лучше задокументировано и позволяет лучше проверять тип компилятора, чем альтернатива передачи этих значений через ViewData[]
.
Отчасти в вашем вопросе подразумевается, что создание модели представления является рутиной. Это может действительно иметь место для частичных представлений, если определение модели представления просто отражает определение некоторого внутреннего объекта. Если это так, вы можете рассмотреть возможность передачи серверной сущности напрямую, вместо дублирования ее определения и содержимого в модели представления.
Наконец, view-модели - это всего лишь инструмент. Используйте их, если они добавляют ценность. Некоторые приложения получают ясность, документирование и преимущества слабой связи благодаря использованию отдельных классов модели представления. Другие, часто небольшие приложения, не получают достаточно, чтобы заслужить накладные расходы. По сути, нет ничего плохого в том, чтобы не реализовывать модели представлений (или любой другой шаблон проектирования). Это выбор дизайна, который вы можете чувствовать себя комфортно, если у вас есть разумный аргумент в его пользу.