看过Phil Haacks关于书籍的项目
http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
这很有用,但我有多种数据类型。
我使用模型视图,以便我可以混合对象,在这种情况下:订单(即 order.id、order.date 等)、客户、SoilSamplingOrder 和 SoilSamplingSubJobs 列表,类似于 [0].id,[ 0].field、[1].id、[1].field 等也许我应该使用 ICollection 而不是 List?我在让 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();
}
}