我正在构建一个调查问卷mvc webapp,并且我无法弄清楚如何从窗体向控制器传递未知数量的参数。Asp.Net MVC形式,具有未知参数的控制器
我的形式是一样的东西:
<% 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>
<% } %>
现在我需要在我的控制器列表< ResponseAnswer>, 其中ResponseAnswer具有的属性:
串questionID, 串AnswerText, 布尔AnswerBool, number Answer Number, ...
那么我怎么能通过一个未知的包含问题ID,答案类型和对控制器的答案的n个项目。 在webforms中,我通过渲染带有repeater而不是foreach的表单来解决此问题,然后遍历问题重复器检查控件ID,每个包含隐藏questionid元素和id = AnswerType的输入的Repeater项。 但这会严重破解mvc中关注的分离?
那么,有没有让我的控制器接受列表< ResultAnswer>并以某种方式建立这个名单没有打破SOC的任何方式,如果没有,我如何通过整个formresult回控制器,所以我可以做的迭代表单数据在那里而不是在视图中。
华友世界,有人拼写我的名字是正确的! – 2009-01-09 14:23:03