我在html控制器的输入中看不到输入值

时间:2019-08-16 10:50:38

标签: c# .net post model-view-controller html.beginform

我的html页面的模型是列表形式。我想在这里输入考试成绩,但是当我输入考试成绩时,我的数据不会转到我的actionResult类型函数中。实际上,当我将整数值写入输入时,它不会保存其值。该数据库还列出了我手动编写的值,但仍未将数据带到函数中。

我的html代码:

@model IEnumerable<OnlineBasvuru.Entity.ViewModel.ExamViewModal>

@{
    Layout = null;
}
<div>
    @using (Html.BeginForm("Save", "Exam", FormMethod.Post))
    {
        <table class="table">
            <thead>
                <tr> 
                    <th>
                        StudentId
                    </th>
                    <th>
                        Note
                    </th>
                </tr>
            </thead>
            <tbody>
                @foreach (var item in Model.ToList())
                {
                    <tr>
                        <td>
                            @Html.Label(item.StudentId.Value.ToString())
                        </td>
                        <td>
                            @Html.EditorFor(modelItem => item.Note)
                        </td>
                    </tr>
                }

            </tbody>

        </table>
        <button type="submit">Save</button>
    }
</div>

我的控制器代码:

  [HttpPost]
        public ActionResult Save(ICollection<ExamViewModal> nwModal) // Normally nwModal should be listed as a list of the model and the data should be in
            {

            foreach (ExamViewModal modal in nwModal)
            {
                EXAM exam = examService.Get(modal.Id);
                exam.NOTE = modal.Note;
                examService.Save(exam );
            }

            return RedirectToAction("ExamList", "Exam");
        }

请告诉我一种我不知道该怎么做的方法。谢谢。

1 个答案:

答案 0 :(得分:1)

尝试使用for循环而不是foreach。然后,将使用索引设置name属性,而不是为循环中的每个项目吐出相同的名称。

例如:

for (int i = 0; i < Model.Count(); i++) {
   Html.EditorFor(m => Model[i].Note)
}