【发布时间】:2019-06-26 11:49:41
【问题描述】:
我正在尝试创建一个可以编辑模型及其所有子模型的 CRUD,但每次父模型最终为空时,如何使用 ASP.Core 2.2 正确执行脚手架 CRUD ?
//Models
class Book {
int IdBook {get; set;}
string Name {getl set;}
ICollection<Page> PageList {get; set;}
}
class Page {
int IdPage {get; set;}
string Name {get; set;}
ICollection<Line> LineList {get; set;}
}
class Line{
int IdLine {get;set;}
string Content {get; set;}
}
这是我的控制器
//Controller
public async Task<IActionResult> Edit(int? id)
{
var book = _context.Book
.Include(b => b.PageList)
.ThenInclude(p => p.LineList)
.First();
return View(book);
}
这就是我想要做的事情
@model Book
@Model.Name
@for(var indexPage = 0; indexPage < Model.PageList.Count; indexPage++)
{
@Model.PageList[indexPage].Name
@for(var indexLine = 0; indexLine < Model.PageList[indexPage].LineList.Count)
{
Html.EditorFor(x => x.PageList[indexPage].LineList[indexLine].Content)
}
}
但是当我发布表单时,我只得到Book 的属性,而Book.PageList 是null,这样做的正确方法是什么?有没有我会错过的教程?
更新
问题好像是类型,控制器接收到post参数 (我的代码有点不同,但都一样,书本就是例子)
【问题讨论】:
-
如何在 ctrl 中创建书籍?它可能没有加载所有属性。
-
刚刚更新问题
-
视图加载正常,只有在表单帖子上,孩子们才会为空
-
我觉得当我生成我的视图时延迟加载正在工作,但是当我发布到 saveChanges 时,延迟加载以某种方式被禁用并且子属性变为空,这可能吗?
标签: asp.net entity-framework razor asp.net-core