-2

3 つのテーブルの組み合わせに基づいてビュー モデルを作成しました。

Edit アクションをクリックすると、3 つのテーブルからのデータが正しく表示されます。

しかし、[保存] ボタンをクリックすると、FormCollection または Request["Id"] からデータを取得できません。

可能な方法を提案してください。

public class ConferenceResourceEditModel {

    public ConferenceRoom ConferenceRoom { get; set; }

    public Resources Resources { get; set; }

    public ResourceAllocation ResourceAllocation { get; set; }

}

public ActionResult Edit(int id)
{

//ConferenceRoom 会議室 = db.ConferenceRooms.Find(id);

        var query =

               from c in db.ConferenceRooms

               from r in db.Resourcess

               from ra in db.ResourceAllocation

               where c.ConferenceID == id


               where c.ConferenceID == ra.ConferenceID 

               where r.ResourceID ==ra.ResourceID 

               select new ConferenceResourceEditModel { ConferenceRoom = c, Resources = r,ResourceAllocation=ra };

        return View(query);       
    }

    //
    // POST: /ConferenceRoom/Edit/5

    [HttpPost]
    public ActionResult Edit(FormCollection form, int id, ConferenceResourceEditModel conferenceroom,ConferenceRoom crf)
    {

        if (ModelState.IsValid)
        {
            db.Entry(conferenceroom).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(conferenceroom);
    }
4

2 に答える 2

0

いくつかの ORM を使用します ( EntityFrameworkのように、個人的にはDatabaseFirstアプローチをお勧めします)。そのようなものを使用して:

変数クエリ =

           from c in db.ConferenceRooms

           from r in db.Resourcess

           from ra in db.ResourceAllocation

           where c.ConferenceID == id


           where c.ConferenceID == ra.ConferenceID 

           where r.ResourceID ==ra.ResourceID 

はるかに複雑で困難です。それが役立つことを願っています。

于 2012-11-23T10:21:35.647 に答える
0

この種のことに関する素晴らしいチュートリアルがあるhttp://www.asp.net/mvcサイトでモデル バインディングを調べてください。

簡単に言えば、コントローラーアクションはタイプ YOURVIEWMODEL のパラメーターを取り、それに自動的にバインドします

于 2012-11-23T09:56:02.750 に答える