Реализация шаблона MVP на многостраничном веб-сайте ASPx

#c# #asp.net #mvp

#c# #asp.net #mvp

Вопрос:

В настоящее время я перепроектирую часть программного обеспечения из приложения aspx для поддержки winforms, а также, делая это, я внедряю шаблон MVP, чтобы упростить дальнейшую разработку и упростить обслуживание двух версий одного и того же приложения.

Но я впервые реализую этот шаблон, поэтому возникает пара вопросов.

  1. Поскольку это приложение имеет несколько страниц / форм, должен ли я иметь одного докладчика для каждого просмотра (одно представление = один aspx-файл)? Я предполагаю, что да, make проще в обслуживании и для поддержания чистоты интерфейсов IView.

  2. В какой «стандартной» детали я должен написать IView? ie. Чтобы проверить это, я пишу представление registerUser.aspx, и есть некоторые элементы управления, которые я хочу отключить в определенное время, должен ли у меня быть общий ‘void DisableControl(имя строки); void EnableControl (имя строки);‘ или более специализированный ‘void DisablePasswordControl(); void EnablePasswordControl();‘?

Я вижу плюсы и минусы обоих подходов, поэтому я подумал, что должен хотя бы спросить, прежде чем делать какие-либо вредные привычки здесь.

Ответ №1:

1 Да

2 Я бы выбрал свойство, подобное этому:

 public class RegisterUser : IRegisterUserView
{
   bool IRegisterUserView.PasswordEnabled
   {
     get { return tbPassword.Visible ; }
     set { tbPassword.Visible = value; }
   }
}
  

Ответ №2:

Для пункта 1 должно быть по 1 презентатору на просмотр, если только у вас нет очень похожего презентатора, который использовал бы идентичный просмотр.

Для пункта 2 у вас должно быть это просто либо как void DisableControl (имя строки), хотя это не слишком обязательно, поскольку все это может быть обработано в вашей части страницы aspx.cs. Это зависит от того, что и когда вы скрываете элемент управления.

Удачи!

Комментарии:

1. Итак, я могу иметь дескриптор представления, каким должен быть, чтобы включение / выключение элементов управления отображением представления не нарушало шаблон? Что ж, тем лучше для меня 🙂

2. Мне действительно не нравится DisableControl , было бы сложно создавать макеты для тестирования. Также отправка идентификатора элемента управления в представлении от докладчика, не очень хорошо.

3. Это не нарушит шаблон, MVP в порядке, пока большая часть логики передается в presenter, но тогда все, что будет отображаться, попадет на вашу страницу или пользовательский элемент управления. Как говорит Магнус, DisableControl был бы сложным для mocks и не очень необходимым.