Передайте список из метода получения (или из представления) в метод публикации ASP. NET MVC - PullRequest
0 голосов
/ 16 июня 2020

Прошу прощения, если заголовок не очень понятен. Итак, я хочу следовать. У меня есть модельный класс под названием «Класс», который содержит список «Студентов». У меня есть представление, которое показывает список студентов. Из этого контрольного списка я хочу передать выбранных студентов обратно в контроллер, где я обновлю базу данных, и в моем классе появятся новые студенты, а у добавленных студентов будет новый класс.

Вот что я сделал. далеко, но теперь я застрял. Заранее спасибо.

Это действия моего контроллера

[HttpGet]
    public ActionResult AddStudents(int? id)
    {
        List<Student> students = (from std in db.Students
                                  where std.St_cl_fk_id == null select std).ToList();
        //ViewBag.students = students;

        return View("Add_Students",students);
    }
    [HttpPost, ActionName("AddStudents")]
    public ActionResult AddStudentsPost(int? id,List<Student> students)
    {
        if(ModelState.IsValid)
        {
            var temp = id;
            Class @class = db.Classes.Find(id);
            foreach (var item in students)
            {
                if (Request.Form[item.St_id.ToString()] != null)
                {
                    @class.Students.Add(item);
                }
            }
            db.Entry(@class).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index", "Classes");
        }
        return View("Add_Student");

    }

Вот мое мнение

@model IEnumerable<GMASchoolProject.Models.Student>
@{
  ViewBag.Title = "Add_Students";
 }


  <h4>Student List</h4>
  @using (Html.BeginForm())
  {
<div class="row">
    <div class="col-lg-8 col-lg-offset-2">
        <div class="panel panel-default">
            <div class="panel-heading">
                Check Students
            </div>
            <div class="form-group">
                <div class="col-md-10">
                    <table>
                        @foreach (var std in Model)
                        {
                            <tr>
                                <td><input type="checkbox" name="@std.St_id" value="@std.IsSelected" /></td>
                                <td>@Html.Label((string)std.St_name)</td>
                            </tr>
                        }
                    </table>
                </div>
            </div>
            <div class="form-group" style="margin:15px,0,15px,0;">
                <div class="col-md-offset-5 col-md-2">
                    <input type="submit" value="Add Students" class="btn btn-primary" />
                </div>
            </div>

        </div>
    </div>
</div>
}


<div>
 @Html.ActionLink("Back to List", "Index", null, new { @class = "btn btn-danger" })
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}

Пожалуйста, дайте мне знать, если я что-то еще делаю неправильно, я новичок ie в этой области. Спасибо

1 Ответ

0 голосов
/ 16 июня 2020

Во-первых, вместо привязки представления к списку студентов, привяжите модель к вашему объекту Class, в котором есть список студентов. Таким образом, когда вы отправляете (отправляете), вы отправляете весь объект модели в контроллер.

Измените свой метод AddStudentsPost, чтобы он принимал объект класса, и выполняйте там свой лог c.

Наконец, измените имя объекта «Класс» на другое, например «Курс». Класс должен быть зарезервирован для реальных классов, чтобы не вызывать путаницу.

Вы не за горами, так что продолжайте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...