Je construis un questionnaire webvc mvc, et je ne peux pas comprendre comment passer un nombre inconnu d'arguments au contrôleur à partir du formulaire.Asp.Net formulaire MVC, avec des paramètres inconnus pour le contrôleur
Ma forme est quelque chose comme:
<% using (Html.BeginForm())
{ %>
<div id="Content">
<% foreach (var group in ViewData.Model.QuestionGroups)
{ %>
<div class="Group">
<%=group.Description %>
<% foreach (var question in group.Questions)
{%>
<div class="Question">
<div class="QuestionTitle">
<%=question.Title %>
</div>
<%=Html.Hidden("Id", question.ID) %>
<div class="QuestionText">
<%switch (question.TypeAsEnum)
{
case QuestionTypeEnum.Text:%>
<%=Html.TextBox("somename") %>
<% break;
case QuestionTypeEnum.Number:%>
<%=Html.TextBox("somename") %>
<% break;
case QuestionTypeEnum.PhoneNumber:%>
<%=Html.TextBox("somename")%>
<% break;
case QuestionTypeEnum.Email:%>
<%=Html.TextBox("somename")%>
<% break;
case QuestionTypeEnum.Date:%>
<%=Html.TextBox("somename")%>
<% break;
case QuestionTypeEnum.YesNo:%>
<%=Html.RadioButton("somename", true)%>
<%=Html.RadioButton("somename", false)%>
<% break;
case QuestionTypeEnum.Alternative:%>
<%=Html.DropDownList("somename", question.Answers)%>
<% break;
}%>
</div>
</div>
<% } %>
</div>
<% } %>
</div>
<div id="submittButton">
<%=Html.SubmitButton()%></div>
<% } %>
Maintenant, ce que je dois à mon contrôleur est Liste < ResponseAnswer>, où ResponseAnswer a les propriétés:
chaîne QuestionID, chaîne AnswerText, bool AnswerBool, nombre AnswerNumber, ...
Alors, comment puis-je passer un inconnu n nombre d'éléments contenant questionID, AnswerType et Answer au contrôleur. Dans les formulaires Web j'ai résolu cela en rendant le formulaire avec des répéteurs au lieu de foreach, puis en passant par le répéteur de questions vérifiant l'ID de contrôle, chaque élément répéteur contenant un élément interrogé caché et une entrée avec id = AnswerType. Mais cela va sérieusement casser la séparation des préoccupations en mvc?
Donc, y a-t-il un moyen de faire en sorte que mon contrôleur accepte la liste < ResultAnswer> et en quelque sorte construire cette liste sans rompre le soc, et sinon, comment puis-je transmettre l'ensemble au contrôleur les données de formulaire là au lieu de dans la vue.
Hourra, quelqu'un a orthographié mon nom à droite! –
Upvote pour le lien aussi, je savais que j'avais vu quelque part quelque part –
Le lien ne fonctionne pas. Pouvez-vous fournir un échantillon de code? C'est la manière suggérée de répondre à SO. – Mahmoodvcs