2

私はMVCにかなり慣れていません。

データ(「SurveyAnswer」タイプの配列)をHTMLフォームからMVCアクションメソッドに投稿しようとしています。

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)が保持され、TextBoxなどの他の入力には、SurveyAnswer.AnswerTextなどのユーザーが変更可能なデータが保持されます。

この問題は、ListBoxデータがactionMethodによって解析されるときに発生します。回答に使用できる最初に選択された値を調べます[5]。SurveyOptionIDはそれを使用し、他の選択された値を無視して次の入力に進みます(オンの場合、この例にはありません)。

これらの複数の選択肢を取得するにはどうすればよいですか!?私は私が考えることができるすべてを試しました:(。助けてください、

よろしくお願いします、マット

4

1 に答える 1

1

アクション メソッドのシグネチャを見せてもらえますか? 配列引数を取りますか?

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