我是新來NET MVC和我試圖開發一個應用程序,其中用戶會回答幾個問題,ASP.NET MVC只有一個單選按鈕輸入的是傳遞給控制器
我有以下模式有關我的問題:
- 問題
- 選擇(包括問題ID爲FK)
和視圖模型
public class QuestionChoiceViewModel
{
public Question Question { get; set; }
public IEnumerable<Choice> Choices { get; set; }
}
在我鑑於我想顯示他們應對的選擇爲單選按鈕的所有問題,所以我在我的觀點選擇/索引以下行。
@model IEnumerable<WebApplication.Models.QuestionChoiceViewModel>
@using (Html.BeginForm("Index", "Choices", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@foreach (var q in Model){
@:<b>Question:</b>
@Html.DisplayFor(modelItem => q.Question.questionText)
<form class="form-group">
@foreach(var c in q.Choices){
<input type="radio" name="@c.choiceText" value="@c.choiceID" />
@c.choiceText
<br />
}
</form>
<br />
}
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="button" value="Back" class="btn btn-default" id="btnBack" />
<input type="submit" name="btnSubmit" value="Submit" class="btn btn-default" />
</div>
</div>
</div>
}
我顯示,可以選擇多個問題沒有問題。
而對於代碼的最終樣品,看我控制器只需的FormCollection類型paramater
public ActionResult Index(FormCollection form)
問題:當我調試,看看是什麼形式 - 還有令牌等 - 是僅第一個單選按鈕組的值。假設我有10個問題,但是我在控制器中傳遞的是第一個問題中選擇的內容。我做錯了什麼?
此外,任何關於我的風格的提示是最受歡迎的,謝謝!
您的模型不能使用'foreach'循環。參考[這個答案](https://stackoverflow.com/questions/30094047/post-an-html-table-to-ado-net-datatable/30094943#30094943) –
斯蒂芬是正確的,你的'名稱'值無線電需要匹配模型內部的屬性名稱。現在,您有選擇文本填充「名稱」屬性。 –
@StephenMuecke謝謝你的時間,你的回答對我很有用。但是當我將我的名字屬性更改爲問題ID時,我可以像我想要的那樣爲單選按鈕生成名稱。因爲我想將它們與問題ID進行分組。它現在工作,我希望我不會錯過別的東西。 – Alp