[英]ASP.NET Core Passing Entity with Linked Data to View and Back
I'm passing an object with a N:M relationship to a view:我将具有 N:M 关系的 object 传递给视图:
public class Project
{
[Key]
public int ProjectId { get; set; }
...
public virtual ICollection<CrewMember> CrewMembers { get; set; }
}
In the controller, I eager load the collection and pass the object to the view:在 controller 中,我急切地加载集合并将 object 传递给视图:
public IActionResult Modify(int? id)
{
var obj = _db.Projects.Where(i => i.ProjectId == id).Include(c => c.CrewMembers).First();
return View(obj);
}
The view looks like this:视图如下所示:
<div class="col-md-7">
<form method="post" enctype="multipart/form-data">
<input asp-for="ProjectId" hidden />
<input asp-for="CrewMembers" hidden />
...
<button type="submit">Update</button>
</form>
</div>
The data seems to "arrive" on the view just fine (if I look at the Model object, it contains the CrewMembers collection), however when I submit the form, the "Projects" collection returns empty:数据似乎“到达”视图就好了(如果我查看 Model object,它包含 CrewMembers 集合),但是当我提交表单时,“项目”集合返回空:
//POST
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Modify(Project obj)
{
//obj.CrewMembers IS NOW EMPTY(!)
_db.Projects.Update(obj);
_db.SaveChanges();
return RedirectToAction("Index");
}
So how can I preserve the Collection when passing it to/from the view?那么在将集合传递到视图/从视图传递时如何保留集合? It seems the <input asp-for="CrewMembers" hidden />
trick doesn't work...似乎<input asp-for="CrewMembers" hidden />
技巧不起作用......
Try:尝试:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Modify([Bind("ProjectId,CrewMembers")]Project obj)
{
//obj.CrewMembers IS NOW EMPTY(!)
_db.Projects.Update(obj);
_db.SaveChanges();
return RedirectToAction("Index");
}
And in the view, use one input for each element of the list.在视图中,为列表的每个元素使用一个输入。
@for(int i=0;i<Model.CrewMembers.Count();i++)
{
<input type="hidden" asp-for="CrewMembers[i].xxxx"/>
<input type="hidden" asp-for="CrewMembers[i].xxxx"/>
<input type="hidden" asp-for="CrewMembers[i].xxxx"/>
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.