接受View中的对象集合并使用EF MVC5存储它

时间:2017-09-26 10:47:07

标签: c# asp.net-mvc entity-framework asp.net-mvc-5

我有两个学生主管的对象,具有多对多关系。

我手动创建了一个联结类,因为我需要存储一个名为TagMainOrCo的属性(指示主管是Main / Co)。

一名学生只能有2名主管,一名主管可以在他们的监督下拥有无限的学生。

这是我的代码段:

学生:

public class Student
{
    public int Id { get; set; }

    public string MatricNo { get; set; }

    // Other properties

    public virtual IList<SupervisorStudents> Supervisors { get; set; }
}

监:

public class Supervisor
{
    public int Id { get; set; }

    public string StaffNumber { get; set; }

    // Other properties

    public virtual ICollection<SupervisorStudents> Students { get; set; }
}

交汇表(SupervisorStudents):

public class SupervisorStudents
{
    [Key, Column(Order = 0)]
    public int SupervisorId { get; set; }

    [Key, Column(Order = 1)]
    public int StudentId { get; set; }

    public string TagMainOrCo { get; set; }

    public virtual Supervisor Supervisor { get; set; }

    public virtual Student Student { get; set; }
}

所以,我在创建学生视图中想要做的是;

  1. 显示 TWO(2)DROPDOWN LIST 以选择主要和 的合作监督者即可。
  2. 下拉列表应包含主管列表。正如我所需要的那样 选择我想指定为Main / Co的主管。
  3. 此视图应该能够获取两个主管的详细信息 将其存储在数据库中。
  4. 到目前为止,我正在使用HtmlHelpers传递数据。至于StudentController,要保存学生数据:

            public ActionResult Save(Student student)
                {
                    if (!ModelState.IsValid)
                    {
                        var viewModel = new StudentRegistrationViewModel
                        {
                            Student = student,
                            Courses = _context.Courses.ToList(),
                            Faculties = _context.Faculties.ToList(),
                            Semesters = _context.Semesters.ToList(),
                            SupervisorStudentses = _context.StudentSupervisors.ToList()
                        };
    
                        return View("StudentRegistrationForm", viewModel);
                    }
    
                    // If new students
                    if (student.Id == 0)
                    {
                        _context.Students.Add(student);
                    }
                   // Other Logics
                 }
    

    无论如何不使用jQuery或AJAX实现这一目标?任何形式的反馈都非常感谢!非常感谢你!

0 个答案:

没有答案