Я бы добавил небольшое дополнение к предыдущим ответам: контроллер должен реализовать логику, необходимую для выбора правильного представления и модели представления, однако он НЕ должен заполнять модель представления.Модель представления вполне способна заполнить себя.
Этот шаблон улучшает инкапсуляцию как контроллера, так и модели представления, а также создает более четкое разграничение между проблемами.Таким образом, если я украду фрагмент кода Майкла:
В контроллере
public ActionResult YourControllerAction(){
MyDbContext context = new MyDbContext();
return View("YourControllerAction", new YourViewModel(context));
}
В представлении модели
public class YourControllerAction {
public YourControllerAction(MyDbContext context) {
ListA = context.TableA.Where(x => x.Something).Select(x => x.ConvertSqlToBusinessObject()).ToList();
ListB = context.TableB.Where(x => x.Something).Select(x => x.ConvertSqlToBusinessObject()).ToList();
}
}