エンティティフレームワークを初めて使用しています。リストをデータベースに保存する際に問題があります。バインディングを使用してリストオブジェクトをデータベースに保存する
コントローラにメソッドを作成します。データベース内のブログのデータを保存
public async Task<IActionResult> Create([Bind("NieuwsArtikelID,titel,datum,imgNaam")] NieuwsArtikel nieuwsArtikel,
[Bind("blog.inleiding", "blog.inleidingTitel")] Blog blog, [Bind("blog.alinea[i].AlineaTitel", "blog.alinea[i].AlineaTekst")] List<Alinea> alineas)
{
if (ModelState.IsValid)
{
nieuwsArtikel.blog = blog;
nieuwsArtikel.blog.alineas = alineas;
_context.Add(nieuwsArtikel);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(nieuwsArtikel);
}
はうまく動作しますが、alineaデータを保存することはできません。それはリストなのでおそらく動作しません。問題は、データベースにリストオブジェクトを保存するにはどうすればいいですか?
NieuwsArtikelクラス:
public class NieuwsArtikel
{
public int NieuwsArtikelID { get; set; }
public string titel { get; set; }
public string datum { get; set; }
public Blog blog { get; set; }
public string imgNaam { get; set; }
}
ブログクラス:
public class Blog
{
public int BlogID {get; set;}
public string inleidingTitel { get; set; }
public string inleiding { get; set; }
public List<Alinea> alineas { get; set; }
}
Alineaクラス:
<form asp-action="Create">
<div class="form-horizontal">
<h4>NieuwsArtikel</h4>
<hr />
<!--Alinea begin-->
@for (int i = 0; i < 2; i++)
{
<div class="form-group">
<label asp-for="blog.alineas[i].AlineaTitel" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="blog.alineas[i].AlineaTitel" class="form-control" />
<span asp-validation-for="blog.alineas[i].AlineaTitel" class="text-danger"></span>
</div>
</div>
<div class="form-group">
<label asp-for="blog.alineas[i].AlineaTekst" class="col-md-2 control-label"></label>
<div class="col-md-10">
<input asp-for="blog.alineas[i].AlineaTekst" class="form-control" />
<span asp-validation-for="blog.alineas[i].AlineaTekst" class="text-danger"></span>
</div>
</div>
}
<!-- Alinea eindig-->
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
:
public class Alinea
{
public int AlineaID { get; set; }
public string AlineaTitel { get; set; }
public string AlineaTekst { get; set; }
public string AlineaQuote { get; set; }
public string AlineaFoto { get; set; }
public int BlogForeignKey { get; set; }
public Blog blog { get; set; }
}
ビューを作成します。
私はそれをより読みやすくするために、Alineaフォームグループに入れました。エリーナオブジェクトが外部キーの参照が必要な場合は
あなたの前提は_「おそらくそれはリストなので動作しません」_が間違っています。人々は、何年もの間、Entity Frameworkを使って子エンティティのリストを保存してきました。 [ask]を読んでコードをデバッグしてください。 'alineas'には何が入っていますか?あなたは、正確に何かを意味するのですか?何が起こると予想されますか、実際には何が起こりますか? – CodeCaster
これらの狂った '[Bind]'属性を取り除きます。あなたのメソッドは 'public async Task Create(NieuwsArtikelモデル)' –
である必要があります。 '@for(int i = 0; i <2; i ++)'を使わないでください。 '@for(int i = 0; i