2009-04-17 6 views
2

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

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

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

ответ

3

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

0

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

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

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