Asp.net 如何使用ASP.Core&;为多级子模型创建CRUD;EF?
我正在尝试创建一个可以编辑模型及其所有子模型的CRUD,但每次父模型最终为空时,如何使用ASP.Core 2.2正确地执行脚手架CRUDAsp.net 如何使用ASP.Core&;为多级子模型创建CRUD;EF?,asp.net,entity-framework,razor,asp.net-core,Asp.net,Entity Framework,Razor,Asp.net Core,我正在尝试创建一个可以编辑模型及其所有子模型的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
//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;}
}
//模型
课堂用书{
int IdBook{get;set;}
字符串名称{getl set;}
ICollection页面列表{get;set;}
}
类页{
int IdPage{get;set;}
字符串名称{get;set;}
ICollection行列表{get;set;}
}
班级线{
int IdLine{get;set;}
字符串内容{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);
}
//控制器
公共异步任务编辑(int?id)
{
var book=\u context.book
.Include(b=>b.PageList)
.然后包括(p=>p.LineList)
.First();
返回视图(书);
}
这就是我要做的
@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)
}
}
@模型书
@型号.名称
@对于(var indexPage=0;indexPagex.PageList[indexPage].LineList[indexLine].Content)
}
}
但是当我发布表单时,我只得到Book
的属性,而Book.PageList
是null
,正确的方法是什么?有没有我会错过的教程
更新
问题似乎是类型,控制器接收post参数
(我的代码有点不同,但都一样,书就是一个例子)
您能否在处理您的请求的控制器上发布操作方法的完整代码 从razor view页面上的代码中,在遍历PageList的内部循环中,您的索引并没有增加
索引线
。这条线不应该吗
@for(var indexLine=0;indexLine
是
@for(var indexLine=0;indexLine
同样,在控制器上,如果Request.Form属性具有整个“假定”负载,但模型绑定不起作用,请尝试使用[FromBody]
注释对提交
参数进行注释,以清楚地通知ASP.NET从请求的bofy绑定提交
,如下所示
public async Task<IActionResult> Edit(int id, [FromBody] Submission submission) {}
public异步任务编辑(int-id,[FromBody]提交){
查看这些小补丁,如果您还有任何问题,请告诉我如何在ctrl中创建图书?很可能它没有加载所有属性。只是正确地更新了问题视图加载,只有在form post上,孩子们才得到null我觉得生成视图时惰性加载正在工作,但当我发布到saveChanges时,惰性加载不知怎的被禁用,孩子们的属性得到null,这可能吗?对于剃须刀问题,这是我的错,错误只出现在书中的示例中,而不是我的实际代码中。对于绑定问题,我必须做一些更改,但是使用
[FromForm]
标记,我能够检索到内容,谢谢,我不知道这个技巧!