2009-08-13 4 views
2

저는 MVC를 처음 사용합니다.다중 선택 목록 상자에서 MVC 동작 방법으로 여러 값을받습니다.

HTML 형식의 MVC 작업 메서드에 데이터 ("SurveyAnswer"형식의 배열)를 게시하려고합니다.

Html.TextBox()와 같이 하나의 값을 가진 HTML 입력에서 데이터를 모두 전달하면 모든 것이 잘 작동하지만 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) 
관련 문제