のは、私はこれらの2つのエンティティを持っているとしましょう:ASP.NET MVCコアEntity Frameworkのサブエンティティの結合
public class Person
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long id_person {get;set;}
[Column(TypeName = "varchar(255)")]
[StringLength(255)]
public String name {get;set;}
}
public class InterestCenter
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long id_interest {get;set;}
[Column(TypeName = "varchar(255)")]
[StringLength(255)]
public String name {get;set;}
}
私はこの2つのエンティティ間の多くの関係に多くを設定します。つまり、Person
には多くのインタレストセンターを持つことができます。ここで
は、私がやったことです:
public class PersonHasInterestCenter
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long id {get;set;}
[ForeignKey("person")]
public long id_person {get;set;}
public virtual Person person { get; set; }
[ForeignKey("interestcenter")]
public long id_interest {get;set;}
public virtual InterestCenter interestcenter { get; set; }
}
今私はPerson
を編集して保存するために、コントローラのアクションとCSHTMLかみそりビューを作成したいです。私がしたいのは、利用可能な全ての中間駅でチェックボックスのセットを表示することです。ここで
は、私がやったことです:
[HttpPost]
public async Task<IActionResult> MyAction(long id, [Bind("id_person,name")] Person p)
{
ViewBag.interestcenters = mydbcontext.interestcenters;
ViewBag.message = "";
if (p.name == "")
{
ViewBag.message = "You need to set name.";
}
else if (ModelState.IsValid == false)
{
ViewBag.message = string.Join("; ", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage));
}
else
{
mydb_context.Update(p);
await mydb_context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(p);
}
そしてここでは、関連するCSHTMLかみそりビューは次のとおりです。
@model myproject.Person
<form asp-action="MyAction">
<div>@ViewBag.message</div>
<input type="hidden" asp-for="id_person" />
<input asp-for="name" />
@foreach (var name in ViewBag.interestcenters)
{
<input type="checkbox" asp-for="WHAT_SHOULD_I_PUT_THERE" />@item.name
}
<input type="submit">
</form>
すべては人の名前を作成または更新のために素晴らしい作品が、私はとの問題を抱えていますインタレストセンターのチェックボックス。私はまた、ビューモデルを作成しようとしました。しかし、私それを動作させるために管理していない...あなたの助けを
おかげ
おかげではなく、どのようにコントローラでこののviewmodelを埋め込むのですか? – Bob5421
私はvmを使い始めるのに役立つ私の回答を編集しました。私は見てみることをお勧めするドキュメンテーションへのリンクを掲載しました。 –
私はポストバックすると、私はinterestcenterの名前は表示されませんが、私はチェックボックスを見ることができます。誰かがデータベースに興味のある場所を追加した場合、チェックボックスの入力はその場所(i)で識別され、IDは存在しないので間違っています... – Bob5421