子 _DetailsViewModel のインスタンスを含む OrderViewModel があります。OrderViewModel には注文ヘッダー情報があり、_DetailsViewModel には注文詳細情報が保持されます。別々のモデルであるにもかかわらず、どちらも同じ単一のデータ ソース (Orders テーブル) を持っています。詳細が独自のビュー モデルにある理由は、それらのフィールドが同じ視覚的配置で別のビューで再利用されるためです。そのため、必要に応じて再利用できるように部分ビューに配置しています。これが私のメインと子のビューモデルのアイデアです:
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; }
}
コントローラー内で、Orders テーブルからすべてのデータを返し、Order エンティティのリストを返すサービスを呼び出します。
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);
メインの Order View 内から Partial View に渡すことができるように、_Details モデルも入力する必要があります...以下のように:
@Html.Partial("_OrderDetails", Model._Details)
メインの注文モデルにすでにデータを入力している単一のサービス呼び出しから _Details モデルにデータを入力する方法はありますか? _Details プロパティをメインの注文ビューに追加し、注文ビューを繰り返して、対応する _Details モデルの各フィールドを手動で設定する必要がありますか? 確かに私は何かが欠けています。
ありがとう...