2009-08-13 48 views
2

我對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使用該值,忽略任何其他選定值並轉到下一個輸入(如果有,則在本例中不存在)。

如何獲得這些多選!我已經提前嘗試一切我能想到:(中。 請幫幫忙,

謝謝, 馬特

回答

1

,你能否告訴我們動作方法的簽名?難道是服用數組參數?

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