Проблема дизайна веб-интерфейса - PullRequest
3 голосов
/ 10 марта 2010

Я пишу страницу с несколькими текстовыми полями и раскрывающимся списком. Поля в раскрывающемся списке влияют на значение текстовых полей.
Например: выпадающие варианты "а" и "б". Текстовые поля: «имя» и «фамилия». При выборе «а», «имя» заполняется «Джо». При выборе «b» «name» заполняется «Bob».

Я написал класс, который содержит раскрывающееся отображаемое имя и значения для «имени» и «фамилии».

Вопрос: в отношении дизайна, какое правильное решение - заставить класс изменить текстовые поля или изменить текстовые поля извне и получить доступ только к данным класса?

Спасибо.

P.S. Я использую ASP.Net и Javascript, но это скорее проблема дизайна, а не языковая зависимость.

Ответы [ 3 ]

2 голосов
/ 10 марта 2010

Зачем вам нужно заполнить поле ввода результатами изменения SELECT? Разве вы не можете получить свою ценность непосредственно из SELECT? Что делать, если пользователь меняет результат в поле ввода? Правило, которому я следую, состоит в том, что если пользователю разрешено вводить любой ввод, используйте поле ввода текста. Если пользователь ограничен массивом вариантов, используйте SELECT (или, возможно, группу переключателей).

Если это длинный список вариантов (длиннее, чем ваш пример на пару порядков), вы можете включить фильтр ввода, где пользователь может набрать несколько букв и сократить параметры до управляемого уровня, но это это единственный случай, когда я могу подумать о том, куда бы ты хотел пойти другим путем.

Конечно, может быть дополнительная информация, которая у вас на уме, но не передана здесь. Если да, пожалуйста, уточните.

1 голос
/ 10 марта 2010

Поскольку класс содержит все три элемента управления, он корректно меняет текстовые поля, так как это внутреннее поведение класса. Теперь, если бы поля были отдельными классами, имело бы смысл манипулировать ими извне.

0 голосов
/ 11 марта 2010

Если эти выбранные поля и комбинированные текстовые поля работают как виджет, то имеет смысл объединить их как таковые в класс, как вы уже сделали. Затем, как сказал Джастин, операции с этими элементами управления должны управляться вашим классом, включая синхронизацию всех полей.

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

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