У меня есть 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? Наверняка я что-то упускаю.
Спасибо...