Как я могу обновить свои 3 таблицы, используя мою модель представления в ASP.NET Ядро MVC (у меня уже есть программа создания)

#c# #asp.net-core-mvc #asp.net-core-webapi #razor-pages

Вопрос:

Итак, во-первых, у меня есть таблицы родителей, учащихся и учащихся текущего года, ученику требуется родитель, поэтому очевидно, что его нужно было бы добавить первым перед остальными. Моя проблема заключается в том, как я могу изменить результат действия Edit/UpdateStudent для редактирования данных в моей базе данных, используя мою модель представления.

Это моя модель представления:

  public class StudentParentViewModel
    {

        //parent
        public int ParentID { get; set; }
        public string Title { get; set; }
        public int Contact_Number { get; set; }
        public Nullable<int> Alt_Contact_Number { get; set; }
        public string Email_Address { get; set; }
        public string Home_Address { get; set; }
        public int ParentTypeID { get; set; }
        public string Parent_Name { get; set; }
        public string Parent_Middle_Name { get; set; }
        public string Parent_Surame { get; set; }
        public long PID_Number { get; set; }

        //student
        public int StudentID { get; set; }
        public System.DateTime DoB { get; set; }
        public string Gender { get; set; }
        public bool Remember { get; set; }
        public int Student_TypeID { get; set; }
        public string Student_Name { get; set; }
        public string Student_Middle_Name { get; set; }
        public string Student_Lastname { get; set; }
        public long SID_Number { get; set; }

        //current year student
        public int CurrentYearStudentID { get; set; }
        public Nullable<int> GradeID { get; set; }
        public Nullable<int> ClassID { get; set; }
        public Nullable<int> YearID { get; set; }
    }
 

Это мое создание, в котором пользователь добавляет 3 вышеупомянутых объекта в свои относительные таблицы в базе данных в одном представлении.

Это мой метод создания действия

   // GET: Students/Create
        public ActionResult RegisterStudent()
        {
            ThorntreeDatabaseEntities db = new ThorntreeDatabaseEntities();
            ViewBag.ParentTypeID = new SelectList(db.ParentTypes, "Parent_TypeID", "Parent_Type");
            ViewBag.Student_TypeID = new SelectList(db.StudentTypes, "Student_TypeID", "Student_Type");
            ViewBag.ClassID = new SelectList(db.Classes, "ClassID", "Class_Name");
            ViewBag.GradeID = new SelectList(db.Grades, "GradeID", "Grade_Name");
            ViewBag.YearID = new SelectList(db.Years, "YearID", "Year1");
            return View();
        }

        // POST: Students/Create
        // To protect from overposting attacks, enable the specific properties you want to bind to, for 
        // more details see https://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]

        public ActionResult RegisterStudent(StudentParentViewModel studentParentViewModel)
        {

            ThorntreeDatabaseEntities db = new ThorntreeDatabaseEntities();
            List<Class> ClassList = db.Classes.ToList();
            ViewBag.ClassID = new SelectList(ClassList, "ClassID", "Class_Name");

            List<Grade> GradeList = db.Grades.ToList();
            ViewBag.GradeID = new SelectList(GradeList, "GradeID", "Grade_Name");

            List<Year> YearList = db.Years.ToList();
            ViewBag.YearID = new SelectList(YearList, "YearID", "Year1");

            List<StudentType> TypeList = db.StudentTypes.ToList();
            ViewBag.Student_TypeID = new SelectList(TypeList, "Student_TypeID", "Student_Type");

            List<ParentType> ParentList = db.ParentTypes.ToList();
            ViewBag.ParentTypeID = new SelectList(db.ParentTypes, "Parent_TypeID", "Parent_Type");
            //Parent 
            Parent parent = new Parent();
            parent.Title = studentParentViewModel.Title;
            parent.Parent_Name = studentParentViewModel.Parent_Name;
            parent.Parent_Middle_Name = studentParentViewModel.Parent_Middle_Name;
            parent.Parent_Surame = studentParentViewModel.Parent_Surame;
            parent.Home_Address = studentParentViewModel.Home_Address;
            parent.PID_Number = studentParentViewModel.PID_Number;
            parent.Contact_Number = studentParentViewModel.Contact_Number;
            parent.Alt_Contact_Number = studentParentViewModel.Alt_Contact_Number;
            parent.Email_Address = studentParentViewModel.Email_Address;
            parent.ParentTypeID = studentParentViewModel.ParentTypeID;
            db.Parents.Add(parent);
            db.SaveChanges();

            int latestParentID = parent.ParentID;

            Student student = new Student();
            student.Student_Name = studentParentViewModel.Student_Name;
            student.Student_Middle_Name = studentParentViewModel.Student_Middle_Name;
            student.Student_Lastname = studentParentViewModel.Student_Lastname;
            student.DoB = studentParentViewModel.DoB;
            student.SID_Number = studentParentViewModel.SID_Number;
            student.Gender = studentParentViewModel.Gender;
            student.Student_TypeID = studentParentViewModel.Student_TypeID;
            student.ParentID = latestParentID;
            db.Students.Add(student);
            db.SaveChanges();

            int latestStudentId = student.StudentID;

            CurrentYearStudent current = new CurrentYearStudent();
            current.ClassID = studentParentViewModel.ClassID;
            current.GradeID = studentParentViewModel.GradeID;
            current.YearID = studentParentViewModel.YearID;
            current.StudentID = latestStudentId;
            db.CurrentYearStudents.Add(current);
            db.SaveChanges();
            
            if (ModelState.IsValid)
            {
                db.SaveChanges();
                return RedirectToAction("ViewStudents");
            }
            return View(studentParentViewModel);

        }
 

Здесь у меня есть кнопка редактирования, она находится в моем файле ViewStudents.cshtml. Он использует модель CurrentYearStudents, поэтому я не могу получить доступ к родительскому идентификатору:

 @model IEnumerable<Thorntree_Primary_School_INF_370_System.Models.CurrentYearStudent>
@{
    ViewBag.Title = "View Students";
}


<html>
<head>
    <style>
        input[type="text"] {
            position: center;
            display: block;
            margin: 0 auto;
        }

        input[type="file"] {
            position: center;
            display: block;
            margin: 0 auto;
        }

        button[type="submit"] {
            position: center;
            display: block;
            margin: 0 auto;
        }

        #tableHeadder {
            display: table-header-group;
        }
    </style>
</head>
<body>
    <h2>Hello</h2>
    <h3>World</h3>

    <div class="container" style="outline:solid">
        <button class="btn bg-primary" style="">Back</button>

        <div @*style="text-align:center"*@>
            <h1>View Students</h1>
            @using (Html.BeginForm("ViewStudents", "Student", FormMethod.Get))
            {
                //the following are search options
                <b> Search Option: </b>@Html.RadioButton("option", "FirstName") <label>Name</label> @Html.RadioButton("option", "Grade") <label>Grade</label>
                @Html.RadioButton("option", "Class")<label>Class</label> @Html.RadioButton("option", "None") <label>None</label> @Html.TextBox("search") <input type="submit" name="submit" value="Search" />
            }
            <table class="table table-dark">
                <thead id="tableHeadder">
                    <tr>
                        <th scope="col">First Name</th>
                        <th scope="col">Last Name</th>
                        <th scope="col">Grade</th>
                        <th scope="col">Class</th>
                    </tr>
                </thead>
                <tbody>
                    @foreach (var item in Model)
                    {
                        <tr>
                            <td>
                                @Html.DisplayFor(modelItem => item.Student.Student_Name)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.Student.Student_Lastname)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.Grade.Grade_Name)
                            </td>
                            <td>
                                @Html.DisplayFor(modelItem => item.Class.Class_Name)
                            </td>
                            <td>
                                @Html.ActionLink("Edit", "UpdateStudent", new { id = item.StudentID }) |
                                @Html.ActionLink("Delete", "Delete", new { id = item.CurrentYearStudentID })
                            </td>
                        </tr>
                    }
                </tbody>
            </table>
        </div>
    </div>
</body>
</html>

 

Вот как выглядят мои 3 таблицы внутри SQL Server

введите описание изображения здесь

Мне действительно не помешала бы помощь, я занимаюсь этой проблемой уже 2 дня и безрезультатно.

Если вы хотите увидеть мое действие по обновлению, вы можете спросить, однако оно почти идентично добавлению, но только что прокомментировано, я не знаю, как двигаться дальше… Пожалуйста, пожалуйста, пожалуйста, помогите, я сейчас в растерянности, я не часто обращаюсь за помощью. (Просто кто я такой 🙁 )

Изменить представление:

 @model Thorntree_Primary_School_INF_370_System.Models.StudentParentViewModel
@{
    ViewBag.Title = "Update Student";
}


@*<html>
<head>
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

<div class="form-horizontal">
    <h4 style="color:white">Parent of Student</h4>
    <h4 style="color:white">Parent of Student</h4>
    <h4 style="color:white">Parent of Student</h4>
    <h4 style="color:white">Parent of Student</h4>


    <h4>Parent of Student</h4>
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
        <label for="Title" class="control-label col-md-2">Title</label>
        <div class="col-md-10">
            @Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control", @value = Model.Title } })
            @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        <label for="Contact_Number" class="control-label col-md-2">Contact Number</label>
        <div class="col-md-10">
            @Html.EditorFor(model => model.Contact_Number, new { htmlAttributes = new { @class = "form-control", @value = Model.Contact_Number } })
            @Html.ValidationMessageFor(model => model.Contact_Number, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        <label for="Alt_Contact_Number" class="control-label col-md-2">Alternative Contact Number</label>
        <div class="col-md-10">
            @Html.EditorFor(model => model.Alt_Contact_Number, new { htmlAttributes = new { @class = "form-control", @value = Model.Alt_Contact_Number } })
            @Html.ValidationMessageFor(model => model.Alt_Contact_Number, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        <label for="Email_Address" class="control-label col-md-2">Email Address</label>
        <div class="col-md-10">
            @Html.EditorFor(model => model.Email_Address, new { htmlAttributes = new { @class = "form-control", @value = Model.Email_Address } })
            @Html.ValidationMessageFor(model => model.Email_Address, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        <label for="Home_Address" class="control-label col-md-2">Home Address</label>
        <div class="col-md-10">
            @Html.EditorFor(model => model.Home_Address, new { htmlAttributes = new { @class = "form-control", @value = Model.Home_Address } })
            @Html.ValidationMessageFor(model => model.Home_Address, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        <label for="ParentTypeID" class="control-label col-md-2">Parent Type</label>
        <div class="col-md-10">
            @Html.DropDownList("ParentTypeID", null, htmlAttributes: new { @class = "form-control", @value = Model.ParentTypeID })
            @Html.ValidationMessageFor(model => model.ParentTypeID, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        <label for="Parent_Name" class="control-label col-md-2">Parent Name</label>
        <div class="col-md-10">
            @Html.EditorFor(model => model.Parent_Name, new { htmlAttributes = new { @class = "form-control", @value = Model.Parent_Name } })
            @Html.ValidationMessageFor(model => model.Parent_Name, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        <label for="Parent_Middle_Name" class="control-label col-md-2">Parent Middle Name</label>
        <div class="col-md-10">
            @Html.EditorFor(model => model.Parent_Middle_Name, new { htmlAttributes = new { @class = "form-control", @value = Model.Parent_Middle_Name } })
            @Html.ValidationMessageFor(model => model.Parent_Middle_Name, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        <label for="Parent_Surame" class="control-label col-md-2">Parent Surname</label>
        <div class="col-md-10">
            @Html.EditorFor(model => model.Parent_Surame, new { htmlAttributes = new { @class = "form-control", @value = Model.Parent_Surame } })
            @Html.ValidationMessageFor(model => model.Parent_Surame, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-group">
        <label for="PID_Number" class="control-label col-md-2">Parent ID Number</label>
        <div class="col-md-10">
            @Html.EditorFor(model => model.PID_Number, new { htmlAttributes = new { @class = "form-control", @value = Model.PID_Number } })
            @Html.ValidationMessageFor(model => model.PID_Number, "", new { @class = "text-danger" })
        </div>
    </div>

    <div class="form-horizontal">
        <h4>Student</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            <label for="DoB" class="control-label col-md-2">Date of Birth</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.DoB, new { htmlAttributes = new { @class = "form-control", @value = Model.DoB } })
                @Html.ValidationMessageFor(model => model.DoB, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="DoB" class="control-label col-md-2">Gender</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Gender, new { htmlAttributes = new { @class = "form-control", @value = Model.Gender } })
                @Html.ValidationMessageFor(model => model.Gender, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Student_TypeID" class="control-label col-md-2">Student Type</label>
            <div class="col-md-10">
                @Html.DropDownList("Student_TypeID", null, htmlAttributes: new { @class = "form-control", @value = Model.Student_TypeID })
                @Html.ValidationMessageFor(model => model.Student_TypeID, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Student_Name" class="control-label col-md-2">Student Name</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Student_Name, new { htmlAttributes = new { @class = "form-control", @value = Model.Student_Name } })
                @Html.ValidationMessageFor(model => model.Student_Name, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Student_Middle_Name" class="control-label col-md-2">Student Middle Name</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Student_Middle_Name, new { htmlAttributes = new { @class = "form-control", @value = Model.Student_Middle_Name } })
                @Html.ValidationMessageFor(model => model.Student_Middle_Name, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Student_Lastname" class="control-label col-md-2">Student Surname</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Student_Lastname, new { htmlAttributes = new { @class = "form-control", @value = Model.Student_Lastname } })
                @Html.ValidationMessageFor(model => model.Student_Lastname, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="SID_Number" class="control-label col-md-2">Student ID Number</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.SID_Number, new { htmlAttributes = new { @class = "form-control", @value = Model.SID_Number } })
                @Html.ValidationMessageFor(model => model.SID_Number, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-horizontal">
            <h4>Register</h4>
            <hr />
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        </div>

        <div class="form-group">
            <label for="GradeID" class="control-label col-md-2">Enrollment for Grade</label>
            <div class="col-md-10">
                @Html.DropDownList("GradeID", null, htmlAttributes: new { @class = "form-control", @value = Model.GradeID })
                @Html.ValidationMessageFor(model => model.GradeID, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="ClassID" class="control-label col-md-2">Enrollment for Class</label>
            <div class="col-md-10">
                @Html.DropDownList("ClassID", null, htmlAttributes: new { @class = "form-control", @value = Model.ClassID })
                @Html.ValidationMessageFor(model => model.ClassID, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="YearID" class="control-label col-md-2">Enrollment for Class</label>
            <div class="col-md-10">
                @Html.DropDownList("YearID", null, htmlAttributes: new { @class = "form-control", @value = Model.YearID })
                @Html.ValidationMessageFor(model => model.YearID, "", new { @class = "text-danger" })
            </div>
        </div>


        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
</div>

}

<div>
    <button>@Html.ActionLink("Back to List", "ViewStudents")</button>

</div>
 

Это мой текущий результат действия по обновлению (Да, вероятно, очень неправильный, но он позволяет редактировать идентификатор студента)

          public ActionResult UpdateStudent(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }       

            ThorntreeDatabaseEntities db = new ThorntreeDatabaseEntities();

           

            List<Class> ClassList = db.Classes.ToList();
            ViewBag.ClassID = new SelectList(ClassList, "ClassID", "Class_Name");

            List<Grade> GradeList = db.Grades.ToList();
            ViewBag.GradeID = new SelectList(GradeList, "GradeID", "Grade_Name");

            List<Year> YearList = db.Years.ToList();
            ViewBag.YearID = new SelectList(YearList, "YearID", "Year1");

            List<StudentType> TypeList = db.StudentTypes.ToList();
            ViewBag.Student_TypeID = new SelectList(TypeList, "Student_TypeID", "Student_Type");

            List<ParentType> ParentList = db.ParentTypes.ToList();
            ViewBag.ParentTypeID = new SelectList(db.ParentTypes, "Parent_TypeID", "Parent_Type");

            StudentParentViewModel viewModel = new StudentParentViewModel();

            Student student = db.Students.Find(id);
            Parent parent = db.Parents.Find(student.ParentID);

            db.Students.Where(x => x.StudentID == parent.ParentID);
            viewModel.Title = parent.Title;
            viewModel.Parent_Name = parent.Parent_Name;
            viewModel.Parent_Middle_Name = parent.Parent_Middle_Name;
            viewModel.Parent_Surame = parent.Parent_Surame;
            viewModel.Home_Address = parent.Home_Address;
            viewModel.PID_Number = parent.PID_Number;
            viewModel.Contact_Number = parent.Contact_Number;
            viewModel.Alt_Contact_Number = parent.Alt_Contact_Number;
            viewModel.Email_Address = parent.Email_Address;
            viewModel.ParentTypeID = parent.ParentTypeID;
            viewModel.ParentID = parent.ParentID;

            int latestParentID = parent.ParentID;
            viewModel.StudentID = student.StudentID;
            viewModel.Student_Name = student.Student_Name;
            viewModel.Student_Middle_Name = student.Student_Middle_Name;
            viewModel.Student_Lastname = student.Student_Lastname;
            viewModel.DoB = student.DoB;
            viewModel.SID_Number = student.SID_Number;
            viewModel.Gender = student.Gender;
            viewModel.Student_TypeID = student.Student_TypeID;
            student.ParentID = latestParentID;

            int latestStudentId = student.StudentID;


            db.Students.Where(x => x.StudentID == parent.ParentID);
            viewModel.Title = parent.Parent_Name;
            viewModel.Parent_Name = parent.Parent_Name;
            viewModel.Parent_Middle_Name = parent.Parent_Middle_Name;
            viewModel.Parent_Surame = parent.Parent_Surame;
            viewModel.Home_Address = parent.Home_Address;
            viewModel.PID_Number = parent.PID_Number;
            viewModel.Contact_Number = parent.Contact_Number;
            viewModel.Alt_Contact_Number = parent.Alt_Contact_Number;
            viewModel.Email_Address = parent.Email_Address;
            viewModel.ParentTypeID = parent.ParentTypeID;


            CurrentYearStudent current = new CurrentYearStudent();
            viewModel.ClassID = current.ClassID;
            viewModel.GradeID = current.GradeID;
            viewModel.YearID = current.YearID;
            viewModel.StudentID = latestStudentId;




            ViewBag.ParentTypeID = new SelectList(db.ParentTypes, "Parent_TypeID", "Parent_Type");
            ViewBag.Student_TypeID = new SelectList(db.StudentTypes, "Student_TypeID", "Student_Type");
            ViewBag.ClassID = new SelectList(db.Classes, "ClassID", "Class_Name");
            ViewBag.GradeID = new SelectList(db.Grades, "GradeID", "Grade_Name");
            ViewBag.YearID = new SelectList(db.Years, "YearID", "Year1");
            return View(viewModel);
        }

 // POST: Students/Update/5
        // To protect from overposting attacks, enable the specific properties you want to bind to, for 
        // more details see https://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult UpdateStudent(StudentParentViewModel viewModel)
        {

            ThorntreeDatabaseEntities db = new ThorntreeDatabaseEntities();
            List<Class> ClassList = db.Classes.ToList();
            ViewBag.ClassID = new SelectList(ClassList, "ClassID", "Class_Name");

            List<Grade> GradeList = db.Grades.ToList();
            ViewBag.GradeID = new SelectList(GradeList, "GradeID", "Grade_Name");

            List<Year> YearList = db.Years.ToList();
            ViewBag.YearID = new SelectList(YearList, "YearID", "Year1");

            List<StudentType> TypeList = db.StudentTypes.ToList();
            ViewBag.Student_TypeID = new SelectList(TypeList, "Student_TypeID", "Student_Type");

            List<ParentType> ParentList = db.ParentTypes.ToList();
            ViewBag.ParentTypeID = new SelectList(db.ParentTypes, "Parent_TypeID", "Parent_Type");


                Parent parent = new Parent();
                parent.Title = viewModel.Title;
                parent.Parent_Name = viewModel.Parent_Name;
                parent.Parent_Middle_Name = viewModel.Parent_Middle_Name;
                parent.Parent_Surame = viewModel.Parent_Surame;
                parent.Home_Address = viewModel.Home_Address;
                parent.PID_Number = viewModel.PID_Number;
                parent.Contact_Number = viewModel.Contact_Number;
                parent.Alt_Contact_Number = viewModel.Alt_Contact_Number;
                parent.Email_Address = viewModel.Email_Address;
                parent.ParentTypeID = viewModel.ParentTypeID;


                int latestParentID = parent.ParentID;

                Student student = new Student();
                student.Student_Name = viewModel.Student_Name;
                student.Student_Middle_Name = viewModel.Student_Middle_Name;
                student.Student_Lastname = viewModel.Student_Lastname;
                student.DoB = viewModel.DoB;
                student.SID_Number = viewModel.SID_Number;
                student.Gender = viewModel.Gender;
                student.Student_TypeID = viewModel.Student_TypeID;
                student.ParentID = latestParentID;


                int latestStudentId = student.StudentID;

                ViewBag.ParentID = new SelectList(db.Parents, "ParentID", "Title", student.ParentID);

                CurrentYearStudent current = new CurrentYearStudent();
                current.ClassID = viewModel.ClassID;
                current.GradeID = viewModel.GradeID;
                current.YearID = viewModel.YearID;
                current.StudentID = latestStudentId;
                db.CurrentYearStudents.Add(current);


                ViewBag.Student_TypeID = new SelectList(db.StudentTypes, "Student_TypeID", "Student_Type", student.Student_TypeID);

                if (ModelState.IsValid)
                {
                    db.Entry(student).State = EntityState.Modified;
                    db.Entry(parent).State = EntityState.Modified;
                    db.Entry(current).State = EntityState.Modified;
                    db.SaveChanges();
                    return RedirectToAction("ViewStudents");
                }
                return View(viewModel);
        }
 

Комментарии:

1. Могу я узнать ваши ожидания здесь? Что именно вы хотите обновить в 3 таблицах из вашей модели представления? Вы имеете в виду эту StudentParentViewModel модель просмотра? если да, то каково ваше мнение об этом?

2. Добавьте необходимую информацию, чтобы ваша проблема могла быть легко воспроизводимой. Этот вопрос трудно воспроизвести, так как в нем много зависимостей, которые не были включены. Попробуйте добавить пример, чтобы загрузить свое RegisterStudent представление и edit контекст, чтобы было намного проще показать вам следующие шаги, в которых вы застряли.

3. @MdFaridUddinKiron Итак, я пытаюсь обновить все данные из таблицы учащихся, затем сведения о родителе, к которому принадлежит учащийся, а также о том, в каком классе, классе и году находится учащийся, в моем представлении отображается только таблица CurrentYearStudent. Я добавил представление для страницы редактирования, где они изменяют свои данные.

4. Если это можно воспроизвести, то, возможно, будет проще указать на вашу проблему

5. @MdFaridUddinKiron итак, что кому-то нужно, чтобы воспроизвести это в том виде, в каком оно есть? мое представление о создании? результат моего текущего нерабочего действия по обновлению?

Ответ №1:

Что ж, давайте начнем с вашего комментария ниже..

«Однако я понятия не имею, почему мой Http-пост: не работает»

Это из-за вашего этого кода @using (Html.BeginForm()) , вместо этого он должен быть таким @using (Html.BeginForm("ActionName", "controllerName"))

Как я могу обновить свои 3 таблицы с помощью моей модели представления:

Пожалуйста, выполните следующие действия

Модель Студента Для Загрузки Списка Первой:

 public class Student
{
    [Key]
    public int StudentID { get; set; }
    public string DoB { get; set; }
    public string Gender { get; set; }
    public bool Remember { get; set; }
    public string Student_Name { get; set; }
    public string Student_Middle_Name { get; set; }
    public string Student_Lastname { get; set; }
    public long SID_Number { get; set; }
    [ForeignKey("Parent")]
    public int ParentID { get; set; }
    [ForeignKey("StudentType")]
    public int StudentTypeID { get; set; }
    [ForeignKey("Grades")]
    public int GradeID { get; set; }
    [ForeignKey("Year")]
    public int YearID { get; set; }
    [ForeignKey("ClassType")]
    public int ClassTypeID { get; set; }
    public virtual StudentType StudentType { get; set; }
    public virtual Parent Parent { get; set; }
    public virtual Grades Grades { get; set; }
    public virtual Year Year { get; set; }
    public virtual ClassType ClassType { get; set; }
}
 

Контроллер Для Загрузки Списка Учащихся:

Я не уверен, какой подход вы используете для привязки данных database first или code first . Я связываю данные из базы данных, как показано ниже:

    public IActionResult GetAllStudents()
        {
            var obj = _context.Students.Include(st => st.StudentType).Include(pt => pt.Parent).Include(y => y.Year).Include(ct => ct.ClassType).ToList();
            return View(obj);
        }
 

Просмотр Списка Учащихся:

 @model IEnumerable<MVCApps.Models.Student>

<p>
    <a asp-action="Create">Create New</a>
</p>
<table class="table table table-bordered">
    <thead>
        <tr>
            <th>
                @Html.DisplayNameFor(model => model.StudentID)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.DoB)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Gender)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Remember)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Student_Name)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Student_Middle_Name)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Student_Lastname)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.SID_Number)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.Parent.Parent_Name)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.StudentType)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.GradeID)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.YearID)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.ClassTypeID)
            </th>
            <th></th>
        </tr>
    </thead>
    <tbody>
@foreach (var item in Model) {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.StudentID)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.DoB)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Gender)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Remember)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Student_Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Student_Middle_Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Student_Lastname)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.SID_Number)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Parent.Parent_Name)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.StudentType.StudentTypeName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Grades.GradeName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Year.YearName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.ClassType.ClassTypeName)
            </td>
            <td>
                @Html.ActionLink("Edit", "UpdateStudentById", new { id = item.StudentID }, new { @class = "btn btn-primary" })
            </td>
            <td>
                @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }, new { @class = "btn btn-info" })
            </td>
            <td>
                @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ }, new { @class = "btn btn-danger" })
            </td>
        </tr>
}
    </tbody>
</table>
 

Примечание: Для загрузки этого представления я использую ваш student доменный класс.

Выход:

введите описание изображения здесь

Операция Обновления:

Когда вы нажмете на кнопку редактирования, она должна загрузить ваше представление с viewmodel типом. итак, где мы будем использовать ваши StudentParentViewModel

Модель представления:

 public class StudentParentViewModel
    {
        //parent
        public int ParentID { get; set; }
        public string Title { get; set; }
        public int Contact_Number { get; set; }
        public Nullable<int> Alt_Contact_Number { get; set; }
        public string Email_Address { get; set; }
        public string Home_Address { get; set; }
        public int ParentTypeID { get; set; }
        public string Parent_Name { get; set; }
        public string Parent_Middle_Name { get; set; }
        public string Parent_Surame { get; set; }
        public long PID_Number { get; set; }

        //student
        public int StudentID { get; set; }
        public DateTime DoB { get; set; }
        public string Gender { get; set; }
        public bool Remember { get; set; }
        public int StudentTypeID { get; set; }
        public string Student_Name { get; set; }
        public string Student_Middle_Name { get; set; }
        public string Student_Lastname { get; set; }
        public long SID_Number { get; set; }

        //current year student
        public int CurrentYearStudentID { get; set; }
        public Nullable<int> GradeID { get; set; }
        public Nullable<int> ClassTypeID { get; set; }
        public Nullable<int> YearID { get; set; }
    }
 

Контроллер обновления:

Когда вы нажмете на edit кнопку, она ударит по контроллеру с определенной id . Поэтому здесь мы свяжем ViewModel после получения подробной информации с этим id и вернем представление для загрузки update view

   public ActionResult UpdateStudentById(int? id)
        {
            //Get student by ID
            var studentObject = _context.Students.Include(st => st.StudentType).Include(pt => pt.Parent).Where(sid => sid.StudentID == id).FirstOrDefault();
            //Bind Dropdown
            List<StudentType> studentType = _context.studentTypes.ToList();
            ViewBag.StudentTypeID = new SelectList(studentType, "StudentTypeID", "StudentTypeName");

            //Bind ParentType Dropdown
            List<ParentType> parentTypeList = _context.ParentTypes.ToList();
            ViewBag.ParentTypeID = new SelectList(parentTypeList, "ParentTypeID", "ParentTypeName");

            //class type
            List<ClassType> classType = _context.classTypes.ToList();
            ViewBag.ClassTypeID = new SelectList(classType, "ClassTypeID", "ClassTypeName");
            //grade
            List<Grades> grades = _context.Grades.ToList();
            ViewBag.GradeID = new SelectList(grades, "GradeID", "GradeName");

            //class type
            List<Year> years = _context.Years.ToList();
            ViewBag.YearID = new SelectList(years, "YearID", "YearName");

            //Bind to View Model
            StudentParentViewModel viewModel = new StudentParentViewModel();

            //Student student = _context.Students.Find(id);
            //  Parent parent = _context.parents.Find(parent.ParentID);

            //db.Students.Where(x => x.StudentID == parent.ParentID);
            viewModel.Title = studentObject.Parent.Title;
            viewModel.Parent_Name = studentObject.Parent.Parent_Name;
            viewModel.Parent_Middle_Name = studentObject.Parent.Parent_Middle_Name;
            viewModel.Parent_Surame = studentObject.Parent.Parent_Surame;
            viewModel.Home_Address = studentObject.Parent.Home_Address;
            viewModel.PID_Number = studentObject.Parent.PID_Number;
            viewModel.Contact_Number = studentObject.Parent.Contact_Number;
            viewModel.Alt_Contact_Number = studentObject.Parent.Alt_Contact_Number;
            viewModel.Email_Address = studentObject.Parent.Email_Address;
            viewModel.ParentTypeID = studentObject.Parent.ParentTypeID;
            viewModel.ParentID = studentObject.Parent.ParentID;

            int latestParentID = studentObject.Parent.ParentID;
            viewModel.StudentID = studentObject.StudentID;
            viewModel.Student_Name = studentObject.Student_Name;
            viewModel.Student_Middle_Name = studentObject.Student_Middle_Name;
            viewModel.Student_Lastname = studentObject.Student_Lastname;
            viewModel.DoB = Convert.ToDateTime(studentObject.DoB);
            viewModel.SID_Number = studentObject.SID_Number;
            viewModel.Gender = studentObject.Gender;
            viewModel.StudentTypeID = studentObject.StudentTypeID;
            studentObject.ParentID = latestParentID;

            int latestStudentId = studentObject.StudentID;



            return View(viewModel);
           
        }
 

Вид обновления:

 @model MVCApps.Models.StudentParentViewModel

@using (Html.BeginForm("UpdateStudent", "Student"))
{
    @Html.AntiForgeryToken()

<div class="form-horizontal">
    <h4 style="color:white">Parent of Student</h4>
    <h4 style="color:white">Parent of Student</h4>
    <h4 style="color:white">Parent of Student</h4>
    <h4 style="color:white">Parent of Student</h4>
    <div class="form-horizontal">
        <h4>Student</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group" hidden>
            <label for="DoB" class="control-label col-md-2">StudentID</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.StudentID, new { htmlAttributes = new { @class = "form-control", @value = Model.StudentID } })
                @Html.ValidationMessageFor(model => model.StudentID, "", new { @class = "text-danger" })
            </div>
        </div>
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            <label for="DoB" class="control-label col-md-2">Date of Birth</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.DoB, new { htmlAttributes = new { @class = "form-control", @value = Model.DoB } })
                @Html.ValidationMessageFor(model => model.DoB, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="DoB" class="control-label col-md-2">Gender</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Gender, new { htmlAttributes = new { @class = "form-control", @value = Model.Gender } })
                @Html.ValidationMessageFor(model => model.Gender, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Student_TypeID" class="control-label col-md-2">Student Type</label>
            <div class="col-md-10">
                @Html.DropDownList("StudentTypeID", null, htmlAttributes: new { @class = "form-control", @value = Model.StudentTypeID })
                @Html.ValidationMessageFor(model => model.StudentTypeID, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Student_Name" class="control-label col-md-2">Student Name</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Student_Name, new { htmlAttributes = new { @class = "form-control", @value = Model.Student_Name } })
                @Html.ValidationMessageFor(model => model.Student_Name, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Student_Middle_Name" class="control-label col-md-2">Student Middle Name</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Student_Middle_Name, new { htmlAttributes = new { @class = "form-control", @value = Model.Student_Middle_Name } })
                @Html.ValidationMessageFor(model => model.Student_Middle_Name, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Student_Lastname" class="control-label col-md-2">Student Surname</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Student_Lastname, new { htmlAttributes = new { @class = "form-control", @value = Model.Student_Lastname } })
                @Html.ValidationMessageFor(model => model.Student_Lastname, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="SID_Number" class="control-label col-md-2">Student ID Number</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.SID_Number, new { htmlAttributes = new { @class = "form-control", @value = Model.SID_Number } })
                @Html.ValidationMessageFor(model => model.SID_Number, "", new { @class = "text-danger" })
            </div>
        </div>

        <h4>Parent of Student</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group" hidden>
            <label for="Title" class="control-label col-md-2">StudentID</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.ParentID, new { htmlAttributes = new { @class = "form-control", @value = Model.ParentID } })
                @Html.ValidationMessageFor(model => model.ParentID, "", new { @class = "text-danger" })
            </div>
        </div>
        <div class="form-group">
            <label for="Title" class="control-label col-md-2">Title</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control", @value = Model.Title } })
                @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Contact_Number" class="control-label col-md-2">Contact Number</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Contact_Number, new { htmlAttributes = new { @class = "form-control", @value = Model.Contact_Number } })
                @Html.ValidationMessageFor(model => model.Contact_Number, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Alt_Contact_Number" class="control-label col-md-2">Alternative Contact Number</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Alt_Contact_Number, new { htmlAttributes = new { @class = "form-control", @value = Model.Alt_Contact_Number } })
                @Html.ValidationMessageFor(model => model.Alt_Contact_Number, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Email_Address" class="control-label col-md-2">Email Address</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Email_Address, new { htmlAttributes = new { @class = "form-control", @value = Model.Email_Address } })
                @Html.ValidationMessageFor(model => model.Email_Address, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Home_Address" class="control-label col-md-2">Home Address</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Home_Address, new { htmlAttributes = new { @class = "form-control", @value = Model.Home_Address } })
                @Html.ValidationMessageFor(model => model.Home_Address, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="ParentTypeID" class="control-label col-md-2">Parent Type</label>
            <div class="col-md-10">
                @Html.DropDownList("ParentTypeID", null, htmlAttributes: new { @class = "form-control", @value = Model.ParentTypeID })
                @Html.ValidationMessageFor(model => model.ParentTypeID, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Parent_Name" class="control-label col-md-2">Parent Name</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Parent_Name, new { htmlAttributes = new { @class = "form-control", @value = Model.Parent_Name } })
                @Html.ValidationMessageFor(model => model.Parent_Name, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Parent_Middle_Name" class="control-label col-md-2">Parent Middle Name</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Parent_Middle_Name, new { htmlAttributes = new { @class = "form-control", @value = Model.Parent_Middle_Name } })
                @Html.ValidationMessageFor(model => model.Parent_Middle_Name, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="Parent_Surame" class="control-label col-md-2">Parent Surname</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Parent_Surame, new { htmlAttributes = new { @class = "form-control", @value = Model.Parent_Surame } })
                @Html.ValidationMessageFor(model => model.Parent_Surame, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="PID_Number" class="control-label col-md-2">Parent ID Number</label>
            <div class="col-md-10">
                @Html.EditorFor(model => model.PID_Number, new { htmlAttributes = new { @class = "form-control", @value = Model.PID_Number } })
                @Html.ValidationMessageFor(model => model.PID_Number, "", new { @class = "text-danger" })
            </div>
        </div>



        <div class="form-horizontal">
            <h4>Register</h4>
            <hr />
            @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        </div>

        <div class="form-group">
            <label for="GradeID" class="control-label col-md-2">Enrollment for Grade</label>
            <div class="col-md-10">
                @Html.DropDownList("GradeID", null, htmlAttributes: new { @class = "form-control", @value = Model.GradeID })
                @Html.ValidationMessageFor(model => model.GradeID, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="ClassID" class="control-label col-md-2">Enrollment for Class</label>
            <div class="col-md-10">
                @Html.DropDownList("ClassTypeID", null, htmlAttributes: new { @class = "form-control", @value = Model.ClassTypeID })
                @Html.ValidationMessageFor(model => model.ClassTypeID, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <label for="YearID" class="control-label col-md-2">Enrollment for Class</label>
            <div class="col-md-10">
                @Html.DropDownList("YearID", null, htmlAttributes: new { @class = "form-control", @value = Model.YearID })
                @Html.ValidationMessageFor(model => model.YearID, "", new { @class = "text-danger" })
            </div>
        </div>


        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Update" class="btn btn-success" />
            </div>
            
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                @Html.ActionLink("List", "GetAllStudents", new { /* id=item.PrimaryKey */ }, new { @class = "btn btn-info" })
            </div>
        </div>
    </div>
</div>

}
 

Вывод представления Upate:

введите описание изображения здесь

Контроллер обновления:

Когда будет загружено представление обновления, после необходимого обновления мы нажмем кнопку обновления, которая отправит обновленные данные UpdateStudent контроллеру с нашими StudentParentViewModel , как показано ниже:

     [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult UpdateStudent(StudentParentViewModel viewModel)
    {
        //If either of this is empty then add
        if (viewModel.StudentID == 0 amp;amp; viewModel.ParentID == 0)
        {
            //Add Or Create 
            //Bind Student
            var student = new Student();
            student.Student_Name = viewModel.Student_Name;
            student.Student_Middle_Name = viewModel.Student_Middle_Name;
            student.Student_Lastname = viewModel.Student_Lastname;
            student.Gender = viewModel.Gender;
            student.StudentTypeID = viewModel.StudentTypeID;
            student.ParentID = viewModel.ParentID;
            student.DoB = viewModel.DoB.ToString();
            student.GradeID = viewModel.GradeID??0;
            student.ClassTypeID = viewModel.ClassTypeID??0;
            student.YearID = viewModel.YearID??0;
            student.ClassTypeID = viewModel.ClassTypeID??0;


            _context.Students.Add(student);
            _context.SaveChanges();

            //Bind Parent

            Parent parent = new Parent();
            parent.Title = viewModel.Title;
            parent.Parent_Name = viewModel.Parent_Name;
            parent.Parent_Middle_Name = viewModel.Parent_Middle_Name;
            parent.Parent_Surame = viewModel.Parent_Surame;
            parent.Home_Address = viewModel.Home_Address;
            parent.PID_Number = viewModel.PID_Number;
            parent.Contact_Number = viewModel.Contact_Number;
            parent.Alt_Contact_Number = viewModel.Alt_Contact_Number;
            parent.Email_Address = viewModel.Email_Address;
            parent.ParentTypeID = viewModel.ParentTypeID;
            _context.parents.Add(parent);
            _context.SaveChanges();
        }
        else
        {
            var findStudent = _context.Students.Find(viewModel.StudentID);
            //Bind to student table
            Student objStudent = new Student();
            findStudent.Student_Name = viewModel.Student_Name;
            findStudent.Student_Middle_Name = viewModel.Student_Middle_Name;
            findStudent.Student_Lastname = viewModel.Student_Lastname;
            findStudent.DoB = viewModel.DoB.ToString();
            findStudent.SID_Number = viewModel.SID_Number;
            findStudent.Gender = viewModel.Gender;
            findStudent.StudentTypeID = viewModel.StudentTypeID;
            findStudent.ParentID = viewModel.ParentID;
            findStudent.ClassTypeID = viewModel.ClassTypeID??0;
            findStudent.GradeID =(int) viewModel.GradeID;
            findStudent.ParentID = viewModel.ParentID;

            //Bind the parent table
            var findParent = _context.parents.Find(viewModel.ParentID);
            Parent objParent = new Parent();
            findParent.Title = viewModel.Title;
            findParent.Parent_Name = viewModel.Parent_Name;
            findParent.Parent_Middle_Name = viewModel.Parent_Middle_Name;
            findParent.Parent_Surame = viewModel.Parent_Surame;
            findParent.Home_Address = viewModel.Home_Address;
            findParent.PID_Number = viewModel.PID_Number;
            findParent.Contact_Number = viewModel.Contact_Number;
            findParent.Alt_Contact_Number = viewModel.Alt_Contact_Number;
            findParent.Email_Address = viewModel.Email_Address;
            findParent.ParentTypeID = viewModel.ParentTypeID;
            _context.SaveChanges();
        }
        //Bind Dropdown
        List<StudentType> studentType = _context.studentTypes.ToList();
        ViewBag.StudentTypeID = new SelectList(studentType, "StudentTypeID", "StudentTypeName");

        //Bind ParentType Dropdown
        List<ParentType> parentTypeList = _context.ParentTypes.ToList();
        ViewBag.ParentTypeID = new SelectList(parentTypeList, "ParentTypeID", "ParentTypeName");

        //class type
        List<ClassType> classType = _context.classTypes.ToList();
        ViewBag.ClassTypeID = new SelectList(classType, "ClassTypeID", "ClassTypeName");
        //grade
        List<Grades> grades = _context.Grades.ToList();
        ViewBag.GradeID = new SelectList(grades, "GradeID", "GradeName");

        //class type
        List<Year> years = _context.Years.ToList();
        ViewBag.YearID = new SelectList(years, "YearID", "YearName");
       // return Redirect()
        return RedirectToAction("GetAllStudents");
    }
 

Примечание: Like Student и Parent таблица вы можете привязать данные модели представления к Nth номеру таблицы, как я показал выше. Наконец, перенаправьте страницу обновления на страницу списка.

Конечный Результат:

введите описание изображения здесь

Примечание: Я обнаружил некоторую несогласованность в вашем коде, которую вы могли бы улучшить, например, если свойство класса вы пишете как Parent_Name , то везде соблюдайте under score соглашение. Если camel case
parentName тогда camel case везде, как мудро pascal case
ParentTypeID , то следуйте этому везде, где это уменьшает запах кода и делает код более читабельным.

Надеюсь, что описанные выше шаги помогут вам решить вашу проблему.

Комментарии:

1. Я навсегда запомню твое имя как МОЕГО СПАСИТЕЛЯ, я приму к сведению соглашения об именовании. От всего сердца благодарю вас, благодарю вас, благодарю вас!

2. Просто еще один момент, я думаю, где вы говорите _context.Students.Add(student); , и _context.parents.Add(parent); поэтому для этих 2 строк я думаю, что это приводит к тому, что данные добавляют запись с новым обновлением, приложенным к ее обновлению. Возможно, вы знаете, в чем проблема? @Md Фарид Уддин Кирон

3. В начале вы можете заметить, что при методе обновления я проверил идентификатор учащегося и родителя, это означает, что при создании нового учащегося и родителей в то время не было бы идентификатора, поэтому, когда будет идентификатор, мы обновляем, а когда нет идентификатора, нужно добавлять. Просто проверьте логику самостоятельно и дайте мне знать ваши отзывы.

4. Я пытался использовать метод обновления как для добавления, так и для запроса на обновление. Вы можете сделать это отдельно, чтобы не было никаких проблем.

5. Вы можете удалить if часть, удалить else и сохранить код внутри else части, которая работает только для обновления. Надеюсь, вы поняли мою мысль.