多个问题的单选按钮答案未返回答案值

本文关键字:答案 返回 单选按钮 问题 | 更新日期: 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"