Каков наилучший способ управления состоянием формы? - PullRequest
2 голосов
/ 17 апреля 2009

Я разрабатываю форму в приложении на C # .NET 2.0, которое содержит сложную логику относительно состояния (включено / отключено) различных элементов управления в форме. (Дизайн является признаком плохого понимания бизнес-аналитиком лучших практик пользовательского интерфейса.)

Как лучше всего управлять состоянием формы? Обычно я видел функцию ShowControls (состояние) или SetEnables (состояние), где состояние - это перечисление возможных конфигураций (INITIAL, AFTER_SELECT, AFTER_COPY и т.д.) Я предсказываю, что это быстро станет неприемлемым.

Какой метод поддержания формы "состояние" вы используете? Какие шаблоны вы можете использовать для отслеживания сложных взаимодействий управления?

Ответы [ 2 ]

3 голосов
/ 17 апреля 2009

Мой любимый шаблон - пассивный просмотр . Он удаляет всю ответственность государственного управления из формы. В конце концов, это значительно упрощает обслуживание кода презентации, но с точки зрения дополнительного кода есть некоторые первоначальные затраты.

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

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

Но на техническую дискуссию ...

Поскольку вы используете веб-формы 2.0, вы можете использовать пользовательские элементы управления для инкапсуляции своего состояния формы с помощью View State. Вы должны использовать подход сверху вниз. Предположим, у вас есть 5 элементов управления, которые контролируют состояние формы. В каждом элементе управления есть заполнитель, который вы можете динамически загружать и выводить в зависимости от состояния элементов управления. Внутри каждого пользовательского элемента управления, загружаемого динамически, вы можете создать эффект русской куклы (инкапсуляция) и ввести туда более сумасшедшие правила, которые аналитик случайным образом вытаскивает из своей задницы. Инкапсуляция и ViewState ваши друзья в этом случае. Обязательно загрузите элементы управления для события Page_Init, так как все остальные события будут хорошо связаны. Мне очень жаль, что вы используете веб-формы и .net 2.0. Так жаль.

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