次のように宣言された「調査」ページがあります。
@using (Html.BeginForm("Survey", "Home", new { questionList = Model.Questions }, FormMethod.Post))
{
<div class="survey">
<ol class="questions">
@foreach (Question q in Model.Questions)
{
<li class="question" id="@q.QuestionName">
@q.QuestionText<br />
@foreach (Answer a in q.Answers)
{
<input class="answer" id="@a.DisplayName" type="checkbox" /><label for="@a.DisplayName">@a.AnswerText</label>
if (a.Expandable)
{
<input type="text" id="@a.DisplayNameFreeEntry" maxlength="250" /> <span>(250 characters max)</span>
}
<br />
}
</li>
}
</ol>
</div>
<div class="buttons">
<input type="submit" value="Finish" />
</div>
}
コードをステップ実行すると、調査を処理するために設定したメソッドにヒットします。
[HttpPost]
public ActionResult Survey( List<Question> questionList, FormCollection postData)
{
//Process Survey
}
ただし、ステップスルーすると、変数questionList
がnullであり、変数postData
にフォームからのデータが含まれていないことがわかります。経由でチェックボックスにアクセスしようとしてRequest[a.Displayname
も機能しません。
私が読んだことはすべて、これが Model から送信メソッドに値を永続化する正しい方法であり、この方法で FormCollection にアクセスできるはずであることを示しています。
私は何を間違っていますか?