Имам OrderViewModel, който включва екземпляр на дъщерен _DetailsViewModel. OrderViewModel има информация за заглавката на поръчката, а _DetailsViewModel съдържа подробна информация за поръчката. Въпреки че са отделни модели, и двата имат един и същ източник на данни..таблицата Поръчки. Причината, поради която детайлите са в техния собствен модел на изглед, е, че тези полета се използват повторно в различен изглед, в същата визуална подредба, така че ги поставям в частичен изглед, за да се използват повторно, ако е необходимо. Ето една идея за моите основни и дъщерни модели на изглед:
public class OrderViewModel
{
public string OrderNum { get; set; }
public string CustonerName{ get; set; }
public double SalesPrice{ get; set; }
public _Details Details { get; set; }
}
public class _DetailsViewModel
{
public string PhoneNum { get; set; }
public string ItemNum { get; set; }
public double Quantity { get; set; }
public string PayMethod{ get; set; }
public string Comments { get; set; }
}
В моя контролер извиквам услуга, която връща всички данни от таблицата с поръчки и връща списък с обекти на поръчки.
orderService = new OrderService();
var orders = orderService.GetOrderInfo(StoreNum);
Оттам използвам Omu.ValueInjecter, за да инжектирам резултатите в основния модел на изглед.
var orderViewModel = orders
.Select(x => new
OrderViewModel().InjectFrom(x)).Cast<OrderViewModel>()
.ToList();
return View(orderViewModel);
Трябва също така да попълня модела _Details, за да мога да го предам към частичен изглед от моя основен изглед на поръчка...като по-долу:
@Html.Partial("_OrderDetails", Model._Details)
Има ли начин да се попълни моделът _Details от едно извикване на услуга, което вече попълва основния модел на поръчка? Ще трябва ли да добавя свойствата _Details към главния изглед на поръчката и след това да повторя изгледа на поръчката, за да задам ръчно всяко поле на съответния модел _Details? Със сигурност пропускам нещо.
Благодаря...