Вот код:
public class MessagesController
{
public virtual ActionResult Compose(ComposeMessageViewModel composeMessageViewModel = null)
{
if (composeMessageViewModel == null)
{
// never executed as composeMessageViewModel is always not null
composeMessageViewModel = new ComposeMessageViewModel();
}
return View(composeMessageViewModel);
}
}
И определение ComposeMessageViewModel
public class ComposeMessageViewModel
{
[DisplayName("To:")]
[NotEmpty] //custom ValidationAttribute
public IEnumerable<MessageRecipientViewModel> Recipients { get; set; }
[DisplayName("Subject:")]
public string Subject { get; set; }
public string Body { get; set; }
}
Проблема заключается в том, что при переходе к /Messages/Compose
(без строки запроса, без параметров формы)Я ожидаю, что параметр будет нулевым, чтобы не возникало ошибок проверки, но это фактический объект со всеми его полями / свойствами, установленными на значения по умолчанию.
Это нежелательно, так как вызывает проверку длямодель, которую нужно выполнить, когда это не должно быть, поскольку ничего еще не было введено!
Для этого класса не установлено пользовательского ModelBinder, и ModelBinder по умолчанию не был изменен.
WTF?