Моя модель содержит два объекта (Напоминания и Пользователи). Каждое напоминание связано с одним пользователем.
public class Reminder
{
[DisplayName("Subject")]
[Required(ErrorMessage = "{0}: error message.")]
[StringLength(200, ErrorMessage = "{0}: error message.")]
public string Name { get; set; }
[DisplayName("Supervisor")]
public User DepartmentSupervisor { get; set; }
}
public class User
{
[DisplayName("Username")]
[Required(ErrorMessage = "{0}: error message.")]
[StringLength(25, ErrorMessage = "{0}: lerror message.")]
public string Username { get; set; }
[DisplayName("Email")]
[StringLength(50, ErrorMessage = "{0}: error message.")]
[Email(ErrorMessage="Not valid.")]
public string Email { get; set; }
}
Я определил модель представления, которую я использую для передачи данных в мое представление:
public class RemindersViewModel
{
public RemindersViewModel()
{
this.Supervisors = new List<SelectListItem>();
}
public Models.Reminder Reminder { get; set; }
public List<SelectListItem> Supervisors { get; set; }
}
Супервизоры - это список пользователей (SelectListItem), который я использую для отображения комбо.
Когда я отправляю форму, контроллер повторно связывает объект с напоминанием:
public ActionResult Edit(Guid id, Models.Reminder Reminder)
{
if (!ModelState.IsValid)
{
// PROBLEM.
}
}
Все работает нормально, и у меня есть напоминание, связанное с выбранным пользователем (имя пользователя), но, поскольку мне не нужно показывать адрес электронной почты в раскрывающемся списке, привязка не может заполнить поле, поскольку она не существует в моей форме.
В процессе проверки я получаю сообщение об ошибке, потому что он пытается проверить модель User, а это не то, чего я действительно хочу.
Каков наилучший подход к вложенным моделям?