从多选列表框中使用MVC操作方法接收多个值

时间:2009-08-13 19:35:06

标签: asp.net-mvc post multiple-select

我对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,其他输入(如TextBoxes)保存用户可修改的数据,例如SurveyAnswer.AnswerText。

当actionMethod解析ListBox数据时出现问题。它查看可用于答案的第一个选定值[5] .SurveyOptionID使用它,忽略任何其他选定值并继续下一个输入(如果有,则在此示例中没有)。

如何获得这些多项选择!?我已经尝试了我能想到的一切:(。 请帮忙,

提前致谢, 马特

1 个答案:

答案 0 :(得分:1)

你能告诉我们动作方法的签名吗?它是否采用数组参数?

public ActionResult ProcessQuestionnaire(Object[] answersArray, Object[] answers)