单选按钮没有任何值进入int和string的字典项

问题描述

因此,基本上,我试图存储用户为每个问题选择的答案。但是在数据库中什么也没有存储在数据库中。我不知道为什么整个测试采用某种形式,但是由于您可以显示代码有限,我无法显示所有内容

这是我的控制器操作:

[HttpGet]
public ActionResult test()
{
    ViewData["TestModel"] = _testRep.GetAllTests();
    ViewData["Title"] = "Waveaxis Aptitude Test";
    return View();
}

[HttpPost]
public ActionResult Test(TakenTestModel model)
{
    Dictionary<int,string> json = new Dictionary<int,string>();
    
    if (!ModelState.IsValid)
    {
        return View();
    }

    for (int i = 0; i < model.SelectedAnswers.Count; i++)
    {
        json.Add(i,model.SelectedAnswers[i]);
    }

    var jsonDb = JsonConvert.SerializeObject(json);
    model.TestForm = jsonDb;
    _takenTestRep.Add(model);
    return RedirectToAction("DoneWTest","AptTest");
}

这是我的观点:

@model AptTestMVC.Models.TakenTestModel

<h1>@ViewData["Title"]</h1>
<hr />
<div id="testForm">
    @foreach (var question in testModel)
    {
        <div style="text-align: justify">
            <div class="form-group">

                @if (question.QuestionDirections != null)
                {
                    <label>
                        @question.QuestionId) @question.QuestionDirections
                        <br /><br />@question.QuestionText
                    </label>
                }
                else
                {
                    <label>@question.QuestionId) @question.QuestionText</label>
                }
            </div>

            @if (question.QuestionImage != null)
            {
                <div class="form-group">
                    <img src="~/AptTestPics/@question.QuestionImage" />
                </div>
            }
            <div class="form-group">
                <hr style="width: 200px; text-align: left; margin-left: 0px;" />
            </div>
            <div class="form-group">
                <label>
                    @Html.RadioButtonFor(model => model.SelectedAnswers[question.QuestionId],"A")
                    @question.AnswerOption1
                </label>
            </div>
            <div class="form-group">
                <label>
                    @Html.RadioButtonFor(model => model.SelectedAnswers[question.QuestionId],"B")
                    @question.AnswerOption2
                </label>
            </div>
            <div class="form-group">
                <label>
                    @Html.RadioButtonFor(model => model.SelectedAnswers[question.QuestionId],"C")
                    @question.AnswerOption3
                </label>
            </div>
            <div class="form-group">
                <label>
                    @Html.RadioButtonFor(model => model.SelectedAnswers[question.QuestionId],"D")
                    @question.AnswerOption5
                </label>
            </div>
            @if (question.AnswerOption4 != null)
            {
                <div class="form-group">
                    <label>
                        @Html.RadioButtonFor(model => model.SelectedAnswers[question.QuestionId],"E")
                        @question.AnswerOption4
                    </label>
                </div>
            }
            <hr />
        </div>
    }
</div>

<div class="form-group">
    <input type="submit" value="Submit" class="btn btn-secondary" />
</div>

这是我的测试结果模型:

public class TakenTestModel
{
    [Key]
    public int Id { get; set; }

    [required(ErrorMessage = "First Name is required")]
    [display(Name = "First Name")]
    public string FirstName { get; set; }

    [required(ErrorMessage = "Last Name is required")]
    [display(Name = "Last Name")]
    public string LastName { get; set; }

    [required(ErrorMessage = "Email Address is required")]
    [display(Name = "Email Address")]
    [DataType(DataType.EmailAddress)]
    public string EmailAddress { get; set; }

    [display(Name = "score")]
    public int NumOfCorrectAns { get; set; }

    public string TestForm { get; set; }

    [NotMapped]
    public Dictionary<int,string> SelectedAnswers = new Dictionary<int,string>();

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)