2

我对 MVC 比较陌生。

我正在尝试将数据(“SurveyAnswer”类型的数组)从 HTML 表单发布到 MVC 操作方法。

一切正常,我从具有单个值的 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 个输入中进行选择时,它们被发布到 action 方法。隐藏的输入包含不会改变的信息,在这种情况下是 SurveyQuestionID,而其他输入(例如 TextBoxes)包含用户可修改的数据,例如 SurveyAnswer.AnswerText。

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

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

在此先感谢,马特

4

1 回答 1

1

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

public ActionResult ProcessQuestionnaire(Object[] answersArray, Object[] answers)
于 2009-08-14T02:31:12.397 回答