从多选择列表框中接收MVC操作方法的多个值
问题描述:
我对MVC很新颖。从多选择列表框中接收MVC操作方法的多个值
我想从HTML表单向MVC操作方法发布数据(“SurveyAnswer”类型的数组)。
一切工作正常,我从具有单个值的HTML输入(如Html.TextBox())传回数据,但是当html输入具有多个值(如Html.ListBox())时,操作方法在我的控制器中,只取这些值中的第一个值,并转到数组中的下一个唯一命名的输入。这里有一个例子:
这里是我的HTML表单看起来是渲染后:
<form action="/test/VoteConfirmation" method="post">
<li>Test RadioButton Question<br/>
<input id="answersArray[0]_SurveyQuestionID" name="answersArray[0].SurveyQuestionID" type="hidden" value="2" />
<ul>
<li>Jane Doe 1<input id="answersArray[0]_SurveyOptionID" name="answersArray[0].SurveyOptionID" type="radio" value="13" /></li>
<li>Jane Doe 2<input id="answersArray[0]_SurveyOptionID" name="answersArray[0].SurveyOptionID" type="radio" value="14" /></li>
<li>Jane Doe 3<input id="answersArray[0]_SurveyOptionID" name="answersArray[0].SurveyOptionID" type="radio" value="15" /></li>
<li>Jane Doe 4<input id="answersArray[0]_SurveyOptionID" name="answersArray[0].SurveyOptionID" type="radio" value="16" /></li>
<li>Jane Doe 5<input id="answersArray[0]_SurveyOptionID" name="answersArray[0].SurveyOptionID" type="radio" value="17" /></li>
<li>Jane Doe 6<input id="answersArray[0]_SurveyOptionID" name="answersArray[0].SurveyOptionID" type="radio" value="18" /></li>
</ul>
</li>
<li>Test SingleList Question<br/>
<input id="answersArray[1]_SurveyQuestionID" name="answersArray[1].SurveyQuestionID" type="hidden" value="3" />
<select id="answersArray[1]_SurveyOptionID" name="answersArray[1].SurveyOptionID">
<option value="19">Jane Doe 7</option>
<option value="20">Jane Doe 8</option>
<option value="21">Jane Doe 9</option>
</select>
</li>
<li>Test TextBox Question<br/>
<input id="answersArray[2]_SurveyQuestionID" name="answersArray[2].SurveyQuestionID" type="hidden" value="4" />
<input id="answersArray[2]_AnswerText" name="answersArray[2].AnswerText" type="text" value="" /></li>
<li>Test DateChoice Question<br/>
<input id="answersArray[3]_SurveyQuestionID" name="answersArray[3].SurveyQuestionID" type="hidden" value="5" />
<input id="answersArray[3]_AnswerText" name="answersArray[3].AnswerText" type="text" value="" />
</li>
<li>Test NumChoice Question<br/>
<input id="answersArray[4]_SurveyQuestionID" name="answersArray[4].SurveyQuestionID" type="hidden" value="6" />
<input id="answersArray[4]_AnswerText" name="answersArray[4].AnswerText" type="text" value="" />
</li>
<li>Test MultiList Question<br/>
<input id="answersArray[5]_SurveyQuestionID" name="answersArray[5].SurveyQuestionID" type="hidden" value="7" />
<select id="answers[5]_SurveyOptionID" multiple="multiple" name="answers[5].SurveyOptionID">
<option value="22">Jane Doe 10</option>
<option value="23">Jane Doe 11</option>
<option value="24">Jane Doe 12</option>
</select></li>
<input type="submit" />
</form>
正如你可以看到,当用户在第一5个输入选择,它们发布到行动方法。隐藏的输入保存不会改变的信息,在这种情况下为SurveyQuestionID,其他输入(如文本框)保存用户可修改的数据,如SurveyAnswer.AnswerText。
问题出在ListBox数据由actionMethod解析时出现。它查看可用于答案的第一个选定值[5] .SurveyOptionID使用该值,忽略任何其他选定值并转到下一个输入(如果有,则在本例中不存在)。
如何获得这些多选!我已经提前尝试一切我能想到:(中。 请帮帮忙,
谢谢, 马特
答
,你能否告诉我们动作方法的签名?难道是服用数组参数?
public ActionResult ProcessQuestionnaire(Object[] answersArray, Object[] answers)