在MVC中,我如何创建一个视图来更新父模型和所有子模型



我是MVC的新手,仍在努力阅读和学习诀窍,这个问题出现了。

如果我有一个模型,比方说User,它看起来像这样:

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,但我似乎找不到很多解释如何做到这一点的来源。

这真的很直接。

一个极简主义的例子。

视图编辑器User.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" />
}

家庭控制器中的操作方法:

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);
}

您将不得不为用户ViewModel搭建脚手架。这将允许您获取用户->儿童->玩具数据。

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

您可能不得不使用Viewmodels从所有这些不同的表中获取所有数据。看看他们。

最新更新