ASP.NET MVC 2: Любой способ пройти два объекта к шаблону?

StackOverflow https://stackoverflow.com/questions/3559872

Вопрос

«Поиск» в этом примере является IList<string> государственных сокращений. Как правило, ваша доменная модель PoSO не будет включать эти параметры. ViewModels обычно принимает эту ответственность, ссылающуюся как на оригинальную модель домена, а также объект поиска, но что происходит, когда модели домена вложены, и вы используете шаблоны MVC (что не будет иметь доступ к корневым свойствам оригинальной модели?

Есть ли способ включить поиск в один объект и модель в другом объекте для шаблона? Допускается ли допустимо, чтобы собрать на лету просмотра модера, специфичного для этого шаблона в виду (что придется включить любые вложенные данные оттуда)? Я бы подумал, что статические методы выдвигают значения поиска плохой.

Есть идеи?

Примечания (к моему знанию):

Доменная модель Poco из репозитория не меняется в структуре. Если вам нужна одна модель, чтобы иметь как объект Customer, так и для параметров DDL для государства США, например, у вас обычно есть ViewModel, который ссылается на объект клиента и списки поиска клиентов.

Однако, когда у вас есть вложенная модель домена (совокупный корню), вложенные объекты не имеют куда вкладывать список списков поиска, а шаблоны MVC не могут получить доступ к модели View Root уровня (их модель представления является частичной моделью).

Редактировать:

Есть ли какой-то способ поставить списки DDL на корневом уровне ViewModel, затем, когда вы попадаете на объект Customer, построить новый ViewModel, который ссылается на списки DDL корневого уровня и текущий объект клиента для отправки на шаблон? Это устранит дублирующие данные в модели, а также использовать одну модель для всех видов. Единственный плохой будет контроллер, такой как код сборки данных на вашем представлении (который так же плохо).

Это было полезно?

Решение

Пара предложений. Во-первых, используйте отдельные модели просмотра для ваших представлений - не используйте новые модели доменов. Эти модели просмотра могут и должны, нести дополнительные данные, необходимые по представлению. Во-вторых, вы можете использовать перегрузки на DisplayFor./Editorfor. пройти дополнительные данные просмотра в шаблон. Таким образом, ваш шаблон может быть специфичным для конкретной модели домена, и все же имейте доступ к дополнительным данным в модели просмотра.

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

Для статических, неизменных списков, таких как состояния состояния, вы можете использовать состояние приложения или вступление кэша. Эти типы списков могут быть загружены в Application_Start из базы данных.

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