Лучший дизайн для создания динамического набора вопросов (элементов управления) в веб-приложении Silverlight?

У меня около 15 шаблонов (это будет расти), и каждый шаблон будет содержать около 10-15 вопросов. Каждый вопрос может иметь ответы в разных форматах, таких как текстовое поле, список, выпадающий список, переключатель и т. Д.

Мне нужно показать один шаблон на странице, за один раз на основе ввода, который я получаю.

Каким будет лучший дизайн для этого?

  1. Поместить вопросы в базу данных и создать динамический контроль?
  2. Вставка xml и отображение с помощью xslt?
  3. Создание статического набора шаблонов?

Или любой другой подход? У меня не так много времени для этого.

Я собираюсь использовать Silverlight для этого.

7 голосов | спросил Sukesh 15 J0000006Europe/Moscow 2012, 20:07:06

1 ответ


1

Вы должны использовать базу данных, и в зависимости от сложности ваших вопросников будет определяться, как «дикие» вам нужно переходить в структуры самореференции и т. д. Я предполагаю, что вы будете использовать реляционную БД.

Соображения:

 1). Will the questions be unique per "questionaire" or re-used?
 2). Will each answer only belong to one Question or re-used across questionnaires?
 3). Will they ever want each answer to lead to a different "next" question? 

В зависимости от вышесказанного будет определена модель «объект», будь то в коде или в качестве объекта базы данных.

Зачем использовать базу данных?

 1). Because you'll be able to slap an admin tool on it at some point .
 2). You can store the answers to the questions "relationally" to the questions.

Теперь для «типов» ответов: текстовые поля, входы, радио, флажки и т. д.

Вам нужно будет хранить ответ «тип» (текстовое поле, радио, ввод) для каждого возможного ответа, который хранится в БД (или XML). как таблица поиска или другое определенное значение, указывающее тип управления для рендеринга.

Затем в клиентском коде вам придется «разрешать» их на стороне отображения с помощью переключателя или механизма построения динамического управления.

Теперь сложная часть будет, когда требуется «список параметров», например, для раскрывающегося списка. Вы должны будете использовать тип ссылки «Ответ с ассоциированными ответами», поэтому вы можете вытащить связанные ответы и указать тип «выпадающий список». Тем не менее, вам, вероятно, было бы лучше отказаться от ответов типа «drop down» в качестве списка кнопок «радио», поскольку они предоставляют одинаковые возможности «выбрать один из набора» /множественного выбора.

Вот какое-то общее направление, основанное на моем опыте:

вам понадобятся Структуры: «Questionaire», «Questions», «Answers» и «UserAnswers». то, возможно, «JoinQuestionaireToQuestions» и «JoinQuestionsToAnswers», если вы хотите получить все возможности повторного использования /фантазии.

Затем вы будете искать Quetsionaire, который вам нужно использовать, получить все вопросы и ответы на каждый вопрос. И визуализируйте их на странице с помощью созданного вами механизма динамического управления.

Затем по завершении вопроса вы сохраняете каждый ответ в БД или сохраняете каждый ответ в клиенте и вставляете его после завершения формы. Вы просто сохраняете значение поля ввода или формы и сохраняете эти данные в качестве «значения» ответа.

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

Я помещаю его под URL-адресом: question commando , lol .. нажмите на " сценарий открытия ", чтобы начать Q и A. В моем сценарии каждый ответ может привести к другому вопросу.

Во всяком случае, надеюсь, что это поможет ...

ответил hanzolo 13 Jam1000000amWed, 13 Jan 2016 02:32:49 +030016 2016, 02:32:49

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132