我无法将我的视图的值(由for循环嵌套)获取到控制器

时间:2016-02-06 13:30:56

标签: asp.net asp.net-mvc razor razorengine

查看

 @for (int i = 1; i < Convert.ToInt32(Model.qc_choice) + 1; i++)
        {
            <span>Question @i</span>
            @Html.TextAreaFor(m => m.MTfull[i].qc_selectedchoice)

            <span>Answer @i</span>
            @Html.TextBoxFor(m => m.MTfull[i].qc_answer)
            <br />
        }
        <p>
            <input type="submit" value="Create" name="submitBtn" />
        </p>

控制器

    [HttpGet]
    public ActionResult checkMT(string quiz_id)
    {
        List<Models.QuizMaker> qm = new List<Models.QuizMaker>();
        var model = new Models.QuizMaker
        {
            act_id = quiz_id,
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult checkMT(QuizMaker qm)
    {
        return RedirectToAction("createMatchingType", "QuizMaker", new { quiz_id = qm.act_id, choice = qm.qc_choice });
    }

    [HttpGet]
    public ActionResult createMatchingType(string quiz_id, string choice)
    {
        List<Models.QuizMaker> qm = new List<Models.QuizMaker>();
        var model = new Models.QuizMaker
        {
            act_id = quiz_id,
            qc_choice = choice,
        };
        return View(model);
    }

这是qc_choice的填充方式来自用户

然后它将循环控制用户输入的数量。

但无论我做什么List MTfull模型的值在我的控制器中始终为null帮助非常感谢。

1 个答案:

答案 0 :(得分:0)

问题出现在for循环语句中。

@ Html.TextAreaFor(m =&gt; m.MTfull [i] .qc_selectedchoice)

意味着期望索引为[i]且i = 1,

如果1改为将其改为0,则它​​不接受索引。

列表接受索引为0而不是索引为1