Проводка переменных данных - PullRequest
0 голосов
/ 16 августа 2011

Я создаю приложение в ASP.NET, C #, MVC3 и SQL Server 2008.

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

Количество дополнительных вопросов и тип возвращаемых данных будут различаться.Например, администратор может добавить 0, 1 или более из следующих типов вопросов:

  1. Есть ли у вас полное чистое вождение?
  2. Оцените свои навыки вождения от 1 до5.
  3. Опишите, когда вы в последний раз отправлялись в дальний путь?
  4. и т. Д. *

Обратите внимание, что предоставленные ответы могут быть двоичными (Q.1), целое число (Q.2) или свободный текст (Q.3).

Как разрешить отправку 0, 1 или более случайных значений из формы обратно в мой код?

Любая помощь будет очень признательна.

Заранее спасибо.

PS.Я задал похожий вопрос относительно хранения этих данных в sql, см. здесь

Ответы [ 4 ]

1 голос
/ 16 августа 2011

Вам понадобится схема EAV для хранения.Для обсуждения этой темы, наряду с распространенными ошибками и решениями, см. Рекомендации по моделированию семантических данных для повышения производительности и масштабируемости .Другими альтернативами являются Разреженные столбцы и Тип данных XML столбец, но я думаю, что EAV превосходит большинство случаев.

0 голосов
/ 17 августа 2011

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

0 голосов
/ 17 августа 2011

Я делал это раньше, когда работал над инструментом опроса.

Итак, прежде всего вам нужно решить, какие вопросы вы будете задавать. У меня были вопросы типа SingleOption, MultiOption и FreeText.

Пользователь входит в экран администратора и выбирает тип вопроса, который он хочет добавить. Затем он нажимает кнопку «Добавить», которая отправляет запрос контроллеру / веб-службе.

Контроллер просматривает тип вопроса и добавляет запись в базу данных.

Грубая структура таблицы ниже:

QuestionID | SurveyId | QuestionTypeId 2 4 1

Это ваша основная структура.

Когда вы создадите интерфейс для ответа на вопросы, вы получите все вопросы с SurveyId = 4.

Затем вы напишите HTML-помощник, который просматривает тип вопроса и генерирует соответствующий элемент управления.

Когда дело доходит до отправки опроса или ответов на ваш вопрос, вы будете отображать все вопросы и поля ответов в некотором div, скажем, мы называем это «survey_questions». Внутри этого div будет форма, которая будет содержать все ваши вопросы и элементы управления для ответов (ввод текста, флажки и т. Д.).

Затем вы отправите эту форму через jQuery в контроллер / веб-службу. Контроллер / веб-служба будет считывать идентификатор опроса и будет перебирать все представленные значения.

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

0 голосов
/ 16 августа 2011

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

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

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

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