多个问题的单选按钮答案未返回答案值
本文关键字:答案 返回 单选按钮 问题 | 更新日期: 2023-09-27 17:58:43
我有一个表格,上面有多个问题,每个问题都有各自的答案,使用单选按钮来回答。在我的控制器中,当我获得表单集合时,键包含问题id,而不是所选的答案id,我需要答案id来正确更新数据库。
以下是我的型号:
public class AccreditationEditModel
{
public int AccreditationID { get; set; }
public int UserID { get; set; }
public DateTime DateCompleted { get; set; }
public List<QuestionEditModel> Questions { get; set; }
[Display(Name = "User")]
public string UserFullName { get; set; }
}
public class AnswerEditModel
{
public int AnswerID { get; set; }
public int QuestionID { get; set; }
public string AnswerText { get; set; }
}
public class QuestionEditModel
{
public int QuestionID { get; set; }
public string QuestionText { get; set; }
public List<AnswerEditModel> Answers { get; set; }
public int AnswerID { get; set; }
}
视图:
<table>
@foreach (var Question in Model.Questions)
{
<tr>
<td colspan="2">
<div>
<strong>@Question.QuestionText</strong>
</div>
</td>
</tr>
foreach (var Answer in Question.Answers)
{
<tr>
<td colspan="2">
<input style="width:10px" type="radio" id="answerswer_id_@Answer.AnswerID" name="Question_@Answer.QuestionID" value="@Answer.AnswerID">@Answer.AnswerText
</td>
</tr>
}
}
</table>
<p>
<input type="submit" value="Save" />
</p>
和我的控制器:
[HttpPost]
public ActionResult Edit(int id, FormCollection model)
{
try
{
id = UserPersistance.UserId(Request);
Accreditation a = new Accreditation();
a.LoadByUserID(id);
a.DateCompleted = DateTime.Now.ToUniversalTime();
a.Save(); //Get an ID for the accreditation table for new.
return RedirectToAction("Details");
}
catch
{
return View();
}
}
不要使用foreach
。使用for loop
,这样您就可以直接将其与您的模型联系起来:
for(int i=0; i< model.Questions.Count;i++)
{
model.Question[i].QuestionText
for(int j=0; j<model.Question[i].Answers.Count; j++)
{
@Html.RadioButtonFor(x => x.Question[i].Answers[j], model.Questions[i].QuestionID, new { @name = model.Questions[i].QuestionID})
}
}
这篇文章解释了绑定到复杂类型,即类
您所需要做的就是为绑定到AnswerEditModel.AnswerID的字段提供正确的名称,例如:name="Answers.AnswerdID"