我正在構建一個調查問卷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