2012-01-17 3 views
0

В MVC-3/Razor мне нужно создать страницу с пятью наборами элементов управления. Каждый набор будет иметь раскрывающийся список и текстовое поле. Пользователь выберет опцию из раскрывающегося списка, а затем предоставит некоторую обратную связь в текстовом поле.Как создать эту страницу в мире бритв

Когда представление отображается в первый раз, я должен включить элементы управления только в первом наборе. В то время как все элементы управления в 4 других наборах должны быть отключены. После того, как пользователь выполнит действие в первом наборе элементов управления (выберите optino из раскрывающегося списка и введите в текстовое поле), второй набор должен стать включенным, тогда как другой набор элементов управления все равно должен быть разблокирован. Данные, показанные в этом втором раскрывающемся списке, зависят от того, какой пользователь выбрал в первом раскрывающемся списке. После завершения действия пользователя в этом втором наборе данные в третьем раскрывающемся списке будут зависеть от любого пользователя, выбранного в первом и втором раскрывающемся списке и т. Д.

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

ответ

1
Step 1) 

Что необходимо уточнить, что будет вызывать другой “sets” быть включен?

  • ли после того, как пользователь выбрал пункт в выпадающем списке

ИЛИ

  • ли после того, как они вошли текст в текстовое поле?

Что также необходимо уточнить, если у вас есть выпадающие текстовое поле они как включен в то же время или является текстовое поле включается только после вы выбрали пункт в выпадающем списке?

После того, как вы это выяснили, переходите к следующему шагу.

Step 2) 

ли пользователи должны визуально видеть 4 комплекта с самого начала (отключение 3 других наборов) или вы можете просто показать другие наборы (на лету) после того, как предыдущий один был успешно заполнен?

В зависимости от ответов это может варьироваться в зависимости от вашего подхода.

Что касается меня, то, как я это делал, просто есть/показать один набор, который загружается в начале. Как только пользователь выбрал элемент из раскрывающегося списка, я бы сделал вызов AJAX, проходящий по выбранному элементу, и вернул список значений для второго раскрывающегося списка. Затем, используя jQuery, я бы duplicate строка (или div) первого набора все время, изменяя значения во втором раскрывающемся списке.

Повторите процесс, когда во втором выпадающем списке выбран элемент.

Но подождите! Есть больше!!!

Предположим, вы достигли третьего набора. Что делать, если пользователь решает изменить значение в первом выпадающем меню? Каковы ваши требования, если это произойдет? Должны ли вы удалить все остальные наборы и начать обратно на квадратный? Я думаю, так ...

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

Дублирование строки (или div) с использованием jQuery довольно забавно и эффективно, это приятно.

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

+0

Шаг 1: Другой набор будет включен, если пользователь выбрал элемент в раскрывающемся списке И ввел текст в текстовое поле. Шаг 2. Пользователь визуально должен видеть, что другие отключены. Если пользователь вернется и изменит выбор из первого раскрывающегося списка, данные в другом раскрывающемся списке нужно будет повторно заполнить, тогда как мы должны просто удалить текст в текстовых окнах. Я тоже думал о jquery, но с веб-формами я мог бы сделать это легко с помощью postbacks/viewstate и т. Д. – imak

+0

Учитывая, что вы не можете выбрать элемент в выпадающем меню, в то же время, когда вы пишете текст в текстовом поле, это оставляет вы с возможностью запуска вызова AJAX после того, как пользователь покинет текстовое поле (что может быть или не быть лучшим вариантом). Я говорю это, потому что обработка событий, когда вы покидаете текстовое поле, не такая тривиальная, как, допустим, ... выбор элемента в раскрывающемся списке. – Vlince

+0

Что касается второго шага, то вам, скорее всего, нужно будет влачить руки с помощью jQuery. Учитывая, что существует множество примеров и людей, желающих помочь, это не должно быть проблемой. Также ... поскольку вы не много играли с MVC, понятно, что это было бы легко с веб-формами. – Vlince