我是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; }
}
我想创建一个视图,该视图将具有适用于所有视图的字段,我将如何编写控制器/视图,以便如果所有字段都被填充,它将正确创建记录?这样,“玩具名称”将用于适当的玩具,即将用于适当的孩子,又将用于适当的用户?
这只是我在想的一个例子,因为我想尝试创建一个喜欢MVC的小项目,而我似乎找不到太多的资料来解释如何做。
答案 0 :(得分:0)
您将不得不搭建用户ViewModel。这将允许您获取用户->儿童->玩具数据。
答案 1 :(得分:0)
您可能必须使用Viewmodels从所有这些不同的表中获取所有数据。检查它们。
答案 2 :(得分:0)
这很简单。
一个极简主义的例子。
视图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);
}