MVP в asp.net, где программировать заполнение пользовательского интерфейса данными из существующих данных? - PullRequest
0 голосов
/ 28 июля 2011

Я нахожусь на новом клиенте, где они реализовали шаблон mvp.

Теперь я хочу использовать его, но что я не могу найти в их коде, это: я открываю форму asp сидентификатор в строке запроса.я получаю объект данных с этим идентификатором, и теперь у меня есть объект, который я хочу показать в текстовых полях в форме asp.net.

у меня есть это:

я создалPresenter

Presenter имеет конструктор, который принимает IxxxView

, страница aspx реализует IxxxView

в ASPX, у меня есть ссылка на докладчика

при загрузке aspx я создаю экземпляр презентатора с помощью (this)

я передаю идентификатор объекта докладчику, докладчик получает данные ...

(пока чтохорошо?)

и затем у меня есть объект в презентаторе и текстовые поля в представлении.

что я должен знать?

1 Ответ

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

В довольно типичной реализации 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.

...