0

Object1 と Object2 の 2 つのモデルがあり、それぞれに多くのプロパティがあります。

私はSQL dbでそれらと外部キー関係を持っています-Object1は多くのObject2を持つことができます

Object2Controller の Create() メソッドで Object2 を作成するときに、Object2 を Object 1 の Guid に関連付けるにはどうすればよいですか?

コードは次のとおりです。

コントローラ:

    [HttpPost]
public ActionResult Create(Object2 object2)
    {
        if (ModelState.IsValid)
        {
            object2.Object2Id = Guid.NewGuid();
            db.Object2.Add(object2);
            db.SaveChanges();
            return RedirectToAction("Index");  
        }
        return View(object2);
    }
4

1 に答える 1

1

このシナリオでは、次の 2 つのオプションしか表示されません。

  1. 他のプロパティと同様に、ビューからポストバックするときに、モデルのObject1 GUID を事前に入力します。これは、要件に応じてさまざまな方法で実現できます (ユーザーが選択したドロップダウン、非表示フィールドへの事前入力など)。
  2. 現在のユーザーが作業しているObject1のサーバーを追跡します。これは、Sessionオブジェクトを使用するか、TempDataを使用して行うこともできます。

編集

Object1詳細ビューから新しいObject2を作成するには、次のフローに従います。

まず、詳細ビューの単純なフォーム:

@using (var form = Html.BeginForm("Add", "Object2Controller", FormMethod.Get)) 
{ 
    <input type='hidden' name='Object1ID' value='@Model.Object1ID' />
    <submit type='submit' value='Add Object1' />
}

次に、 Object2のコントローラーに、外部キーを事前設定するAddメソッドを用意します。

[HttpGet]
public ActionResult Add(Guid Object1ID)
{
    Object2 newObj = new Object2();
    newObj.Object1ID = Object1ID;
    return View("MyAddView", newObj);
}

これは、質問のCreateメソッドにポストバックするObject2詳細フォームを指します。

于 2012-06-24T05:46:06.823 に答える