Как в MVC создать представление, которое будет обновлять родительскую модель и все дочерние модели? - PullRequest
0 голосов
/ 12 декабря 2018

Я новичок в MVC, все еще пытаюсь читать и изучать веревки, и этот вопрос возник.

Если бы у меня была модель, скажем, пользователь, которая выглядит так:

public partial class User
{
    public int ID { get; set; }
    public string Username { get; set; }
    public string PasswordHash { get; set; }
    public string Email { get; set; }

    public virtual Child Child { get; set; }
}

И модель Child, которая является дочерней сущностью для родительского пользователя:

public partial class Child
{
    public int ID { get; set;}
    public string Name { get; set; }

    public virtual Toy Toy { get; set; }
}

И конечная модель Toy, которая является дочерней моделью для родительской модели Child:

public partial class Toy
{
    public int ID { get; set; }
    public string ToyName { get; set; }
}

И я хотел создать представление, в котором поля были бы доступны для всех, как мне написать контроллер / представление так, чтобы, если бы все поля были заполнены, он создавал записи правильно?Так, что ToyName будет для соответствующей Игрушки, которая будет для соответствующего Ребенка, которая будет для соответствующего Пользователя?

Это всего лишь пример, о котором я думал, потому что я хотел попытаться сделатьсвоего рода любимый проект для практики MVC, и я не могу найти много источников, объясняющих, как это сделать.

Ответы [ 3 ]

0 голосов
/ 17 декабря 2018

Вам, вероятно, придется использовать Viewmodels, чтобы получить все данные из всех этих разных таблиц.Проверьте их.

0 голосов
/ 17 декабря 2018

Это действительно просто.

Минималистский пример.

Представление EditUser.cshtml:

@model WebApplication2.Models.User

@using (Html.BeginForm("SaveUser", "Home", FormMethod.Get))
{
    @Html.LabelFor(m => m.Username)
    @Html.EditorFor(m => m.Username) <br />

    @Html.LabelFor(m => m.Child.Name)
    @Html.EditorFor(m => m.Child.Name) <br/>

    @Html.LabelFor(m => m.Child.Toy.ToyName)
    @Html.EditorFor(m => m.Child.Toy.ToyName) <br />

    <input type="submit" />

}

Методы действий в контроллере Home:

public ActionResult EditUser(User user)
{
    return View(user);
}

public ActionResult SaveUser(User user)
{
    // Do something with user to save it

    // then show the Edit form again

    return View("EditUser", user);
}
0 голосов
/ 13 декабря 2018

вам придется создавать леса вашего пользователя ViewModel.Это позволит вам выбрать данные пользователя -> ребенка -> игрушки.

https://blogs.msdn.microsoft.com/mcsuksoldev/2013/09/20/managing-entity-relationships-with-mvc-scaffolding/

...