asp.net MVC фреймворк? - PullRequest
       5

asp.net MVC фреймворк?

0 голосов
/ 29 декабря 2011

Я изучаю MVC и плохо знаком с ним.Я прочитал несколько статей о MVC.

Что я мог понять:

Представление - это просто интерфейс, который никогда напрямую не связывается с Model.Он всегда взаимодействует с Controler.

Контроллер - это программный компонент, который получает и отвечает на просмотр и связь с моделью.

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

Правильно ли мое понимание?

Далее я хочу узнать:

где будет POCO-класс в модели?

модель не станет сложной, если всевалидации, код связи БД и бизнес-логика будут там?

Если в модели появятся классы / библиотеки muplitle, сможет ли элемент управления общаться с любым из них напрямую?и они ответят на Controler, и контроль снова свяжется с View?

спасибо. СПАСИБО, спасибо за помощь и руководство.

Ответы [ 3 ]

3 голосов
/ 29 декабря 2011

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

Контроллер выполняет большую часть тяжелой работы. Все веб-запросы проходят через контроллер. Контроллер выступает посредником между представлением и моделью. Контроллер передает модель представлению, представление берет модель и использует ее данные для заполнения ее полей.

Модель - это просто набор объектов данных, которые определяют вашу модель данных. Иногда это будут отдельные классы, которые не имеют специальных функций, иногда они будут классами, сгенерированными из такого инструмента, как Entity Framework.

MVC - это просто инфраструктура, предназначенная для разделения вашего пользовательского интерфейса на отдельные компоненты, чтобы его было проще обслуживать.

2 голосов
/ 29 декабря 2011

Представление - это просто интерфейс, который никогда напрямую не связывается с моделью. Он всегда взаимодействует с Controler.

Вид - это внешний интерфейс, да. Он не должен изменять модель, но он должен знать о модели, поскольку он должен получать от нее информацию. Он получает Модель от Контроллера и «взаимодействует» с Контроллером посредством ссылок / форм, которые он может содержать.

Контроллер - это программный компонент, который получает и отвечает на просмотр и связь с моделью.

Контроллер не «получает» представление, но он получает запросы, которые могут исходить от представления (не обязательно одного из его собственных представлений). Таким образом, он отвечает на запросы, а не на просмотры как таковые. Он извлекает модель и должен обрабатывать вызывающие методы модели для изменения модели на основе запроса («сообщить модели»). Затем он передает модель для просмотра.

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

Логика и услуги часто могут отсутствовать в Модели. Службы должны быть отдельными (они вообще не относятся к M.V.C.), а контроллеры, как правило, содержат логику вашего приложения. Проверка может быть определена в вашей модели (некоторым пуристам это не нравится), но отображение проверки выполняется в представлении. Связь с базой данных может быть в вашей модели, или у вас могут быть службы, которые делают это.

где будет класс POCO в модели?

Классы POCO будут в вашей модели, да. То же самое относится и к классам ViewModel (которые сами по себе часто являются классами POCO). Модель может иметь много классов, которые представляют ваши данные для разных обстоятельств, включая несколько способов представления одних и тех же данных из-за разных мест их использования.

Например: у вас может быть «модель смены пароля», которая представляет некоторые свойства объекта «Пользователь» и будет полностью отличаться, скажем, от модели «отображения профиля пользователя».

Ваши объекты Model, которые непосредственно представляют элементы базы данных, могут находиться в их собственной библиотеке, но ваши объекты ViewModel, скорее всего, будут находиться в отдельной библиотеке. Ваша модель не должна знать о вашем контроллере или представлении. Хотя вы будете создавать объекты ViewModel с учетом вашего представления (только с учетом свойств, которые вам нужны в View), сам ViewModel даже не должен иметь никакого кода, связывающего его с вашими представлениями.

2 голосов
/ 29 декабря 2011

Только основы:

Модель: Это будут простые старые классы C # (POCO), которые будут храниться в базе данных и извлекаться при необходимости.Должен быть минимальным, чтобы не было никакой логики здесь на мой взгляд.О таких вещах, как установление соединения с базой данных, IMHO, следует позаботиться в контроллере.

Представление: отображаемая HTML-страница основана на данных, извлеченных из базы данных (ваших POCO).Здесь у вас будет вся логика для презентации.Например: использование главной страницы.Вставка PartialView.

Контроллер: здесь у вас есть бизнес-логика.Это означает обработку запросов, настройку моделей для ваших представлений (ViewModels).

Это просто абстракция между вещами, чтобы упростить / уточнить вещи для / во время разработки.Но у вас часто будут серые линии.

Вот очень простой пример того, как Facebook может отображать профиль пользователя.Сначала запрос для данного пользователя будет передан соответствующему контроллеру сервером.Затем контроллер принимает запрос, выясняет, какая информация пользователя запрашивается, подключается и извлекает данные пользователя из базы данных, соответствующим образом форматирует данные / модель и передает их в представление.Затем представление будет отображаться, а затем просто извлекать данные из модели и отображать их в представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...