1

PhilHaacksプロジェクトを

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

これは便利ですが、データ型が混在しています。

モデルビューを使用して、オブジェクトを混在させることができます。この場合は、Order(order.id、order.dateなど)、Customer、SoilSamplingOrder、およびこの[0] .id、[のようなSoilSamplingSubJobsのリストです。 0] .field、[1] .id、[1] .fieldなどおそらく、Listの代わりにICollectionを使用する必要がありますか?UpdateModelを機能させるのに問題があったので、コレクションメソッドからの抽出を使用しました。最初の4つのメソッド呼び出し:orderRepository.FindOrder(id); などは、モデルに編集するオリジナルを与えます。しかし、この時点以降、サブジョブを更新する方法に少し迷っています。問題を理解するのに十分な描写ができているといいのですが。

 [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {

            Order order = orderRepository.FindOrder(id);
            Customer cust = orderRepository.FindCustomer(order.customer_id);
            IList<SoilSamplingSubJob> sssj = orderRepository.FindSubOrders(id); 
            SoilSamplingOrder sso = orderRepository.FindSoilSampleOrder(id);

            try
            {

                UpdateModel(order, collection.ToValueProvider());

                UpdateModel(cust, collection.ToValueProvider());

                UpdateModel(sso, collection.ToValueProvider());



                IList<SoilSamplingSubJob> sssjs = orderRepository.extractSSSJ(collection);

                foreach (var sj in sssjs)
                    UpdateModel(sso, collection.ToValueProvider());


                orderRepository.Save();

                return RedirectToAction("Details", new { id=order.order_id});

            }
            catch
            {
                return View();
            }
        }
4

2 に答える 2

1

取得する必要のあるデータを反映するビューモデルの開発に取り組み、オブジェクトのリスト(この場合は配列)に対してPhilHaackのメソッドを使用してビューモデルをレンダリングするモデルの表示/編集テンプレートを作成する必要があると思います。サブモデルクラスの。モデルバインディングフレームワークに、返されたモデルを(パラメーターとして)アクションに構築させてから、ビューモデルデータからドメインモデルを再構成します。Brad Wilsonには、役立つはずのテンプレートに関する優れた一連の記事があります。

于 2010-05-30T14:33:09.057 に答える