Я использую .net 4.5.1, Visual Studio 2013. Я создал страницу создания счета с помощью ViewModel -CreateInvoiceViewModel.
public class CreateInvoiceViewModel
{
public int EntityID { get; set; }
.
.
public ICollection<InvoicePartialCreateMainBillViewModel> MainBill { get; set; }
public ICollection<InvoicePartialCreateDetailBillViewModel> DetailBill { get; set; }
}
При нажатии «Создать счет» через AJAX страница частичного просмотра будет загружена на той же странице с ViewModel, которая вложена еще в две модели просмотра. Вложенные модели представления получают данные в вызываемой функции AJAX. страница частичного просмотра ViewModel - InvoicePartialCreateViewModel
public class InvoicePartialCreateViewModel
{
public InvoicePartialCreateViewModel()
{
this.MainBill = new HashSet<InvoicePartialCreateMainBillViewModel>();
this.DetailBill = new HashSet<InvoicePartialCreateDetailBillViewModel>();
}
public float TotalAmount { get; set; }
.
.
public ICollection<InvoicePartialCreateMainBillViewModel> MainBill { get; set; }
public ICollection<InvoicePartialCreateDetailBillViewModel> DetailBill { get; set; }
internal void CreateMainBill(int count)
{
for(int i = 0; i < count; i++)
{
this.MainBill.Add(new InvoicePartialCreateMainBillViewModel());
}
}
internal void CreateDetailBill(int count)
{
for (int i = 0; i < count; i++)
{
this.DetailBill.Add(new InvoicePartialCreateDetailBillViewModel());
}
}
}
Вложенные модели — InvoicePartialCreateMainBillViewModel, InvoicePartialCreateDetailBillViewModel
public class InvoicePartialCreateMainBillViewModel
{
public string PackageName { get; set; }
.
.
public virtual InvoicePartialCreateViewModel InvoiceCreate { get; set; }
}
public class InvoicePartialCreateDetailBillViewModel
{
public DateTime OrderDate { get; set; }
.
.
public virtual InvoicePartialCreateViewModel InvoiceCreate { get; set; }
}
Вложенные модели вызываются помощником html @Html.EditorFor.
@Html.EditorFor(model => model.MainBill)
@Html.EditorFor(model => model.DetailBill)
Частичный вид визуализируется частично. Вложенные модели не отображаются. Поддерживает ли ViewModel вложенные модели и можно ли применить виртуальное свойство к viewModel?
IList
, а неICollection
во ViewModels. Вы не должны использоватьvirtual
в ViewModels, потому что у вас нет никаких преимуществ. В EFvirtual
разрешена ленивая загрузка, но ViewModel и EF — должны быть 2 разные модели - person teo van kot   schedule 11.01.2016EditorFor()
для коллекций сложных объектов. Вы создалиEditorTemplates
дляInvoicePartialCreateMainBillViewModel
иInvoicePartialCreateDetailBillViewModel
? - person   schedule 11.01.2016