#c# #asp.net #mvp
#c# #asp.net #mvp
Вопрос:
В настоящее время я перепроектирую часть программного обеспечения из приложения aspx для поддержки winforms, а также, делая это, я внедряю шаблон MVP, чтобы упростить дальнейшую разработку и упростить обслуживание двух версий одного и того же приложения.
Но я впервые реализую этот шаблон, поэтому возникает пара вопросов.
-
Поскольку это приложение имеет несколько страниц / форм, должен ли я иметь одного докладчика для каждого просмотра (одно представление = один aspx-файл)? Я предполагаю, что да, make проще в обслуживании и для поддержания чистоты интерфейсов IView.
-
В какой «стандартной» детали я должен написать 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 и не очень необходимым.