Прямым ответом будет обращение к дочернему объекту с использованием нотации массива (конечно, если предположить, что Children
- это нечто, реализующее IList
):
@Html.EditorFor(model => model.Children[0].Val)
Если вы намереваетесь предоставить редакторы длявсе Children
, хотя было бы лучше определить шаблон редактора для этого типа и использовать @Html.EditorFor(model => model.Children)
вместо отображения редакторов для каждого элемента в коллекции с помощью цикла.
Редактировать: Исправлено ICollection
вместо IList
ошибка.
Обновление:
Если ваша коллекция реализует только ICollection
(и, следовательно, не индексируется),тогда вам следует рассмотреть возможность использования ViewModel (отображая IList
) вместо модели, которую вы используете в настоящее время, чтобы сделать вышеприведенное действительным.
Если это не вариант, то вы можете рассмотреть этот хак:
// essentially creating the correct name manually
@Html.TextBox(Html.NameFor(m => m.Children) + "[0].Val",
model.Children.First().Val)
Конечно, вы теряете поддержку автоматического использования любого имеющегося у вас шаблона редактора, но это не может быть проблемой в вашем случае (особенно учитывая, что Val
звучит как простой тип).