我正在尝试将来自我的viewmodels的子集合绑定到控制器中的域模型,我不知道如何。 (我尝试使用自动播放器并没有走得太远。)
我已经掌握了有关我正在处理的所有信息,因此为了保存树,我认为可能很容易放置链接,而不是重复相同的代码。
MVC Partial View not rendering from an EditorTemplates
到目前为止,这是我在控制器中的内容。我知道我的孩子可能需要处于for循环中。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(ParentVM viewModel)
{
if (ModelState.IsValid)
{
var child = new Child()
{
Name = viewModel.Name,
DOB = viewModel.DOB,
Address = viewModel.Address
};
var parent = new Parent()
{
FirstName = viewModel.FirstName,
LastName = viewModel.LastName
};
//Parent parent = new Parent();
//var employee = AutoMapper.Mapper.Map<Parent, ParentVM>(parent);
db.Parents.Add(parent);
db.Childs.Add(child);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(viewModel);
}
父插入正确,但子节点(它们是三个)只插入一个,除了parentID之外,值都是null。
答案 0 :(得分:0)
var child = new Child(){..
的代码没有意义。查看上一个问题,ParentVM
甚至不应包含Name
,DOB
和Address
的属性。它们似乎是ChildVM
类的属性,而不是ParentVM
(也许它们是两者的属性,但可以从您的代码中告知),并且无论如何您都不会为ParentVM.Name
提供任何控件{1}},ParentVM.DOB
等等,因此当您回发时它们将始终为null(因此当您保存到数据库时为null)。
有点不清楚你想要做什么,但如果你正确使用了EditorTemplate
ChildVM
,那么你可以使用
Child
类
if (ModelState.IsValid)
{
....
// assumes your using a view model named ChildVM and property Childs is typeof List<ChildVM>
foreach(ChildVM item in viewmodel.Childs)
{
// Create a new Child based on ChildVM
var child = new Child()
{
Name = item.Name,
DOB = item.DOB,
Address = item.Address
};
db.Childs.Add(child);
}
....
db.SaveChanges();
}