Estoy construyendo un cuestionario mvc webapp, y no puedo entender cómo pasar una cantidad desconocida de argumentos al controlador desde el formulario.Asp.Net formulario MVC, con parámetros desconocidos para el controlador
Mi forma es algo así como:
<% 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>
<% } %>
Ahora lo que necesito en mi controlador está lista < ResponseAnswer>, donde ResponseAnswer tiene las propiedades:
cadena IdPregunta, cadena answerText, bool AnswerBool, número AnswerNumber, ...
Entonces, ¿cómo puedo pasar un desconocido n cantidad de elementos que contienen questionID, AnswerType y Answer para el controlador. En webforms resolví esto al representar el formulario con repetidores en lugar de foreach, y luego iterando a través del repetidor de preguntas comprobando el ID de control, cada elemento repetidor que contiene un elemento questionid oculto y una entrada con id = AnswerType. ¿Pero esto romperá seriamente la separación de la preocupación en mvc?
Entonces, ¿hay alguna manera de hacer que mi controlador acepte List < ResultAnswer> y de alguna manera compilar esta lista sin romper soc, y si no, cómo paso todo el resultado de vuelta al controlador para que pueda hacer la iteración de los datos de formulario allí en lugar de en la vista.
¡Hurra, alguien deletreó mi nombre correcto! –
Voto ascendente también para el enlace, sabía que había visto algo en alguna parte –
El enlace no funciona. ¿Puedes proporcionar una muestra de código? Es la forma sugerida de responder en SO. – Mahmoodvcs