0

ViewModel を使用して複数のエンティティにデータを保存および更新する方法について誰か助けてもらえますか?

次のようなViewModelがあります。

  public class StudentViewModel
  {
    public Student student;
    public StudentAddress studentAddress { get; set; }
    public StudentPhoto studentPhoto { get; set; }
    // Three entities are related to one to one relationship

    public StudentViewModel()
    { }

    }

私のコントローラーは:

  [HttpPost]
    public ActionResult Create(StudentViewModel studentViewModel)
    {
        if (ModelState.IsValid)
        {
            return View(studentViewModel);
        }

            Student s = new Student()
             {
                 Name =studentViewModel.Student.Name,
                 Speciality = studentViewModel.Student.Speciality,
                 DateOfReg = studentViewModel.Student.DateOfJoinig,
                 Qualification = studentViewModel.Student.Qualification,
                 Email = studentViewModel.Student.Email

             };

            StudentAddress sa = new StudentAddress()
            {
                StudentId= studentViewModel.Student.StudentId,
                Address = studentViewModel.StudentAddress.Address,
                Area = studentViewModell.StudentAddress.Area,
                City = studentViewModel.StudentAddress.City,
                State = studentViewModel.StudentAddress.State,
                Mobile = studentViewModel.StudentAddress.Mobile

            };

            StudentPhoto sp = new StudentPhoto()
            {
                StudentId= studentViewModel.Student.StudentId,
                Photo = studentViewModel.StudentPhoto.Photo

            };    
            db.Students.Add(s);
            db.StudentAddress.Add(sa);
            db.StudentPhoto.Add(sp);

            db.SaveChanges();
            return RedirectToAction("Home");
    }

ビューは次のとおりです。

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
    <legend>Doctor</legend>


    @Html.EditorFor(model => model.Student.Name )
    @Html.EditorFor(model => model.Student.Speciality)
    @Html.EditorFor(model => model.Student.DateOfJoinig)
    @Html.EditorFor(model => model.Student.Standard)

    @Html.HiddenFor(model => model.Student.StudentId)
    @Html.EditorFor(model => model.StudentAddress.Address)
    @Html.EditorFor(model => model.StudentAddress.Area)
    @Html.EditorFor(model => model.StudentAddress.City)
    @Html.EditorFor(model => model.StudentAddress.State)

    @Html.HiddenFor(model => model.Student.StudentId)
    @Html.EditorFor(model => model.StudentPhoto.Photo)

     <p>
                <input type="submit" value="Create" />
            </p>
        </fieldset>
    }

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

(複数のエンティティから) データを取得してビューに表示することができました。ただし、上記のエンティティを新しいデータで保存および更新する方法に行き詰まっています。ほとんどの例は 1 対 1 の関係であり、マッピングは自動的に行われますが、この場合、データは複数のエンティティに属しています。

私の問題は、作成ページにリダイレクトされたデータを保存しようとしたときです。「ModelState.IsValid」は常に false であるため、データは保存されません。どのように進めればよいか教えてください。

ありがとう。

4

3 に答える 3