В довольно типичной реализации MVP, я ожидаю, что интерфейс IView будет указывать события. Presenter, когда он получает ссылку на IView (в вашем случае это будет в конструкторе Presenter), должен присоединить обработчики событий для любого события, которое он хочет обработать. Очень часто одно из событий будет сигнализировать докладчику, что данные должны быть помещены в представление или помещены в модель представления для привязки представления. Иногда событие сигнализирует о том, что докладчик должен предпринять какое-то действие, например обновить модель или запустить процесс.
В WebFormsMvp, после того, как ваш докладчик загрузил данные в viewmodel представления (установив свойство View.Model), представление может привязаться к viewmodel с использованием синтаксиса привязки. Например, ваш элемент управления textbox может выглядеть примерно так:
<asp:textbox runat="server" DataSource="<%# Model.Data %>" />
Если вы не используете WebFormsMvp, вам просто нужно убедиться, что у Presenter есть способ передать данные в представление. Вы можете сделать это, добавив свойство к IView, которое реализует пользовательский элемент управления. Когда вызыватель для свойства вызывается, ему нужно будет передать значение в соответствующий элемент управления. Аналогично, когда вызывается метод получения этого свойства, он должен возвращать значение этого элемента управления.
Например, ваш пользовательский элемент управления может включать реализацию свойства, такую как:
string IMyView.ViewData
{
get { return TextBox1.Text; }
set { TextBox1.Text = value; }
}
Однако, если вы хотите стать модным, вы также можете работать с элементами управления DataSource. Главное, что нужно помнить, это то, что если вы принимаете MVP, вы хотите сохранить часть View как можно проще, потому что представления труднее тестировать, чем докладчиков. Таким образом, представление должно делать как можно меньше - устанавливать значения, получать значения и инициировать события, и еще очень мало. Поведение динамического просмотра, такое как скрытие или отображение элементов, выделение или не выделение и т. Д., Должно контролироваться Presenter с использованием либо свойств интерфейса IView, либо через ViewModel, которую совместно используют Presenter и View.
Лично я предпочитаю и рекомендую использовать WebFormsMvp.