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();
}
}