Я довольно новичок в ASP.NET MVC, и сейчас я пытаюсь понять некоторые из концепций дизайна. Одна вещь, в которой я сейчас застрял, - это как (лучше всего) справиться с ситуацией, подобной описанной ниже.MVC Partial Views, Models and more
Предположим, у меня есть страница, которая должна отображать несколько «разделов». Например, с левой стороны есть список, который управляется данными, а затем выбранный элемент в списке отображает следующий список в другом разделе на странице. Для лучшего понимания давайте предположим, что левый список - это список категорий фильмов, а в другом списке отображается список фильмов, которые содержатся в этой категории, а также различные детали фильма.
Теперь у меня есть форма ORM, такая как Entity Framework, LINQ to SQL или что-то другое, которое отображает таблицы базы данных tblCategory и tblMovie соответственно в категории и в категории Movie. Эти объекты находятся в пространстве имен MyMVCApp.Data.Entities. Затем я использую шаблон репозитория, расположенный в пространстве имен MyMVCApp.Data, чтобы инкапсулировать запросы (через LINQ) в отношении этих объектов, чтобы вернуть наши объекты модели.
Вот где мой первый вопрос. Должен ли репозиторий возвращаться к объектам модели модели или объектам домена, которые затем расширяются для создания объектов модели представления? В моем наивном уме я вижу объекты, возвращенные из ORM, как просто контейнеры для данных с объектами домена, содержащими бизнес-логику. Так что, должно быть, здесь есть абстракция?
В любом случае, вернемся к моему сценарию. Теперь давайте предположим, что я хочу представить два раздела, описанные в начале этого. Я предполагаю, что здесь должно произойти то, что моя модель сущности домена будет содержать список категорий и связанные с ними фильмы. Так что что-то вроде списка, каждый из которых содержит список.
Эта модель была бы заполнена где-то. Это мой второй вопрос. Скажем, мое предположение верное, и просто объекты данных возвращаются из ORM. Теперь у меня есть пространство имен/проект под названием MyMVCApp.Core.Model (или тому подобное) с некоторыми объектами домена, такими как объекты Movie и Category, упомянутые в предыдущем абзаце. Имеют ли эти сущности методы для их извлечения данных из ORM и заполняют себя? Или репозиторий извлекает эти модели заполненных сущностей? И еще один вопрос по этой части, если у меня есть объект Movie и Customer в моем ORM, приемлемо ли иметь объекты домена одинаковыми?
Наконец, я предполагаю, что контроллер теперь имеет этот заполненный список объектов Category и Movie и передает его обратно в представление. Я предполагаю, что лучше всего, чтобы каждый из разделов, описанных в начале, был частичным видом и передавал населенную модель каждому из них? Таким образом, это может быть IndexController, который извлекает заполненный объект CategoryMovies, передавая его частичным представлениям категорий и частичному просмотру фильмов. Затем мне нужно каким-то образом определить выбранную категорию (quesrystring?) И отобразить соответствующий список фильмов в этой категории в представлении.
ОК, поэтому, если кто-то добрался до этого момента в моих промах, я сделаю глубокий поклон. Надеюсь, я достаточно подробно объяснил свои смешные мысли и вопросы, чтобы кто-то мог дать какое-то просветление.
Спасибо, что посмотрели! :-)