У меня есть ViewModel, которая, помимо других свойств, содержит массив объектов EmailAddress. У самого EmailAddress есть такие свойства, как «Адрес» и «IsPrimary». Моя модель разбивки:
public class UserDetailsViewModel {
public BUser User { get; set; }
public string[] Roles { get; set; }
public EmailAddress[] EmailAddresses { get; set; }
}
Я показываю страницу "Сведения о пользователе", которая является довольно стандартной. Например, я отображаю данные, используя @Html.DisplayFor(model => model.User.UserName)
и @Html.DisplayFor(model => model.User.Comment)
. У меня также есть раздел на странице, в котором перечислены все объекты EmailAddress, связанные с пользователем:
@if(Model.EmailAddresses.Length > 0) {
foreach (var address in Model.EmailAddresses) {
<div>
@Html.DisplayFor(model => address.Address)
</div>
}
} else {
<div class="center">User does not have any email addresses.</div>
}
Моя проблема в том, что я хотел бы показать форму «Добавить адрес электронной почты» над списком адресов электронной почты. Я думал, что приму «нормальный» подход таким образом:
@using(Html.BeginForm(new { id=Model.User.UserName, action="AddUserEmailAddress" })) {
<text>Address:</text> @Html.EditorFor(model => ** HERE I AM STUCK **)
<input type="submit" value="Add Email" class="button" />
}
Как вы можете сказать, я застрял здесь. Я пробовал model => Model.EmailAddresses[0]
и model => Model.EmailAddresses.FirstOrDefault()
. Оба они ужасно потерпели неудачу.
Я уверен, что я все делаю неправильно. Я даже думал о добавлении «фиктивного» свойства в мою ViewModel типа EmailAddress, чтобы я мог связать его с этим в моем EditorFor - но это, похоже, очень плохой взлом. Там должно быть что-то простое, что я упускаю из виду!
Буду признателен за любую помощь, которую кто-либо может предложить по этому вопросу. Заранее спасибо!