2016-03-25 4 views
0

私は外部キーを持つモデルを持っています。 私の詳細は作成直後のMVCサブオブジェクトの読み取り

@Html.DisplayFor(model => item.CHILD.CHILDNAME) 

で表示して、私は成功した子オブジェクトを参照することができます。しかし、私は新しい親を作成した後、私はサブオブジェクトを読み取ることができません。

public ActionResult Create([Bind(Include = "PARENTID,CHILDID")] PARENT pARENT) 
    { 
     if (ModelState.IsValid) 
     { 
      db.PARENTs.Add(pARENT); 
      db.SaveChanges(); 
      ViewBag.CHILDID = new SelectList(db.CHILDs, "CHILDID", "CHILDNAME"); 

    int childid=pARENT.CHILDID; //this works 
      string childname=pARENT.CHILD.CHILDNAME; //this returns null 
      return RedirectToAction("Index"); 
     } 
     return View(pARENT); 
    } 

新しい親レコードを作成した直後にCHILDNAMEを参照できるようにするにはどうすればよいですか?

私の推測では、データが保存され再読み込みされるまで、従属テーブルをリンクしていないモデルと関係があると思いますが、私はViewbagコールがこれを処理すると考えました。

答えて

0

親オブジェクトが保存されている間、サブオブジェクトは自動的に保存されません。これらのサブオブジェクトにアクセスするには、親オブジェクトをリロードする必要があります。

+0

作成機能で親オブジェクトをリロードすることはできますか?私はそれが次のページに当たる前に、子供の情報の一部を電子メールで送信したいと思います。これはどうすればいいですか? –

+0

確かに。 SaveChangesの後に、そのクエリーにサブオブジェクトを含めることを保証しているDBを再クエリーするだけで、データを取得する必要があります。 –

+0

私は純粋なMVCを使用していますが、直接データベースのSQLクエリーは行っていません。あなたの提案に基づいて、私は試みました: db.PARENTs.Add(pARENT); db.SaveChanges(); pARENT = db.PARENTs.Find(pARENT.PARENTID); ViewBag.CHILDID =新しいSelectList(db.CHILDs、 "CHILDID"、 "CHILDNAME"); - 保存後に検索を実行します。しかしこれはうまくいかなかった。レコードをリロードするサンプルコードを送信できますか? –

関連する問題