У меня есть viewmodel внутри другой viewmodel для разделения проблем. Я создал для него шаблон редактора и установил значения по умолчанию в контроллере во время выполнения. К сожалению, когда модель родительского представления отправляется в контроллер, она не сохраняет значения элементов моделей дочерних элементов. Вот код:ViewModel внутри ViewModel - как его разместить?
Примечание: Некоторые кодовые названия были изменены, поэтому, если есть какие-либо несоответствия, укажите это в комментарии. Я просмотрел его примерно в 4 раза и нашел все, что думаю.
public class ParentViewModel {
public ChildViewModel {get;set;}
}
public class ChildViewModel {
public List<Item> Items {get;set;}
}
public class Item {
public int Id {get;set;
public string Name {get;set;}
}
Я создал EditorTemplate, который связывает должным образом на представлении
@model MyProject.ViewModels.ChildViewModel
@foreach (var item in Model.Items)
{
<div class="Item" @String.Format("id=Item{0}", @item.Id) >
Item #@Html.DisplayFor(models => item.Id):
@Html.LabelFor(model => item.Name)
@Html.EditorFor(model => item.Name)
</div>
}
Однако, когда я отправить форму, что ParentViewModel привязан к, элементы в ChildViewModel являются нуль!
Controller.cs
public class ControllerController{
public ActionResult Form {
return View(new ParentViewModel {
ChildViewModel = new ChildViewModel {
Items = new List<Item>(Enumerable.Range(1,20).Select(i => new Item { Id=i })
}
});
}
[HttpPost]
[ActionName("Form")]
public class ActionResult FormSubmitted(ParentViewModel parentViewModel) {
//parentViewModel.ChildViewModel.Items is null!
_fieldThatIsRepresentingMyDataService.Save(parentViewModel);
}
}
ViewView.cshtml
<div class="editor-label">
@Html.LabelFor(model => model.ChildViewModel)
</div>
<div id="ItemList" class="editor-field">
@Html.EditorFor(model => model.ChildViewModel)
</div>
Любая помощь очень ценится.
Вы можете попробовать следующее: (ParentViewModel parentViewModel, List childs). Это работает для меня в аналогичной проблеме. –
Модель дочернего представления не является нулевой, но свойство его элементов по-прежнему равно нулю. –