一個控制器方法,我有被聲明爲「調查」頁面如下:傳遞數據通過POST
@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
步驟爲空並且變量postData
不從表格包含任何數據。試圖通過Request[a.Displayname
訪問複選框也不起作用。
我讀過的一切都表明,這是將模型中的值保存到提交方法的正確方法,並且我應該能夠以這種方式訪問FormCollection。
我在做什麼錯?
你可能會看到這個http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx和這個http://stackoverflow.com/questions/5496593/mvc- net-model-binding-to-the-on-the-fly/5499341#5499341 – Tassadaque