Dovresti utilizzare un database e, a seconda della complessità dei tuoi questionari, determinerai quanto è necessario "selvaggio" entrare in strutture autoreferenziali e simili. Suppongo che userete un DB relazionale.
Considerazioni:
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?
A seconda di quanto sopra determinerà il modello "oggetto", sia in codice che come oggetto di database.
Perché usare un database?
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.
Ora per i "tipi" di risposte: caselle di testo, input, radio, checkboxes ecc.
Dovrai memorizzare una risposta "tipo" (casella di testo, radio, input) su ogni risposta possibile memorizzata nel DB (o XML). come una tabella di ricerca, o qualche altro valore definito che indica il tipo di controllo da rendere.
Quindi nel codice cliente, dovrai "risolverli" sul lato display delle cose usando uno switch o un meccanismo di costruzione del controllo dinamico.
Ora la parte difficile sarà quando verrà richiesto un "elenco di opzioni", come per un menu a discesa. Dovrai avere un tipo di riferimento "Rispondi con risposte associate", in modo da poter estrarre le risposte associate e se digitare "dropdown". Tuttavia, probabilmente sarebbe meglio rendere le risposte del tipo "a discesa" come un elenco di pulsanti "radio" poiché forniscono la stessa funzionalità "scegli una serie" / scelta multipla.
Ecco alcune indicazioni generali basate sulla mia esperienza:
avrai bisogno di strutture come: "Questionaire", "Questions", "Answers" e "UserAnswers". quindi forse un "JoinQuestionaireToQuestions" e un "JoinQuestionsToAnswers" se vuoi ottenere tutto riutilizzabile / fantasia.
Quindi guarderai il Quetsionaire che devi usare, prendi tutte le domande e le risposte per ogni domanda. E renderli sulla pagina usando il meccanismo di rendering del controllo dinamico che hai creato.
Poi, mentre completano il questionario, memorizzi ogni risposta nel DB, o salva ogni risposta nel client e fai un inserimento dopo aver completato il modulo. Basta mantenere il valore del campo di input o modulo e salvare i dati come "valore" della risposta.
Abbastanza divertente .. Recentemente ho riportato in vita un vecchio progetto che fa qualcosa del genere .. puoi controllare il javascript (costruito più di 5 anni fa) sulla pagina e vedere come l'ho fatto (non è per i deboli di cuore) ed è più una prova di concetto, ma è tutto basato su database e generato dinamicamente. Seriamente l'ho riportato in vita la scorsa settimana ..
L'ho messo sotto l'URL: comando di domanda , lol .. fai clic su "script di scoperta" per iniziare la Q e la A. Nel mio scenario, ogni risposta può portare a una domanda diversa.
In ogni caso, spero che tutto ciò aiuti ...