Поскольку для получения одной веб-страницы используется один запрос, можем ли мы назвать эти контроллеры «контроллерами страниц»?
Зачем тебе? Они названы контроллерами. В конце концов, действие на контроллере не обязательно обслуживает «веб-страницу», оно может отвечать, используя данные JSON, XML, RSS или только часть веб-страницы («контроль», если хотите).
Если виджет представляет собой классический asp.net webcontrol или usercontrol, и я хочу отображать этот виджет на многих страницах, как можно избежать повторения логики виджета, если эта логика находится в «контроллере страниц»?
- Убедитесь, что ваша (бизнес) логика не находится в контроллере: она там не принадлежит. Работа контроллера заключается в том, чтобы отображать ввод / вывод, а не обрабатывать логику.
- Представления, содержащие ваш виджет, должны иметь
ViewModel
, который содержит ViewModels, необходимые для виджетов, например,
-
MainViewModel
{
UserWidgetViewModel UserViewModel;
List<Foo> Bar;
// ...
}
UserWidgetViewModel
{
string UserName;
int Reputation;
//...
}
Сначала я почувствовал, что это некрасиво, но я уже некоторое время пользуюсь этим и считаю, что он прекрасно инкапсулирует необходимые данные.
Надеюсь, это поможет