Контроллер является боссом в паттерне MVC.Он отвечает за делегирование, выполняя при этом минимальную работу;).
Приходит запрос, и босс смотрит на него и думает: "Хм ... здесь много работы. Мне нужно получить некоторые данные из моей базы данных. К счастью, у меня есть подчиненные! Эй, модель,подойди сюда. Мне нужно, чтобы ты ушел и взял всю информацию из DAL. "
Думай о модели как о разработчике.Выполняет всю настоящую тяжелую работу, пачкает руки, и без модели вся система рухнет.Он отключается и выполняет всю бизнес-и доменную логику.Затем он бежит обратно к боссу и выполняет всю его тяжелую работу.«Вот, пожалуйста».
Затем босс должен вернуть данные пользователю.Опять же - слишком много работы для него.Таким образом, он получает глупого младшего разработчика, известного как способ сделать это.(Не все юниоры глупы, но это работает для этого примера!).Вид ничего не знает.Неважно, как данные появились, просто они там и работают.Начальник может внести незначительные изменения в данные, поскольку мы не хотим, чтобы представление имело больше ответственности, чем нужно, тогда представление отключается и отображает данные.В зависимости от рабочей нагрузки, начальник может нанять несколько видов для работы.
В основном, контроллер контролирует весь поток в схеме MVC.Он решает, какие модели вызывать, какие представления отображать и какие данные из модели передавать в представление (ViewModels).
Вы можете вызывать другие контроллеры с контроллера.Если у вас есть окно поиска на домашней странице, например, когда пользователь нажимает кнопку поиска, он может вызвать функцию индексации на контроллере поиска.В моей метафоре выше, это было бы сродни тому, как один отдел передавал работу другому.Затем весь этот процесс начинается снова, и начальник набирает персонал, необходимый ему для текущего запроса.