Я читал аннотации данных (т. Е. сообщение в блоге Скотта Гатри ), и я очень рад, что в одном месте есть логика валидации.
Кто-нибудь был в состоянии успешно использовать эту технику при предложении пользователю ввести подмножество свойств, связанных с данным классом?
Например (псевдокод) ...
public class Person
{
[Required]
public string Name
[Required]
public string Email
}
Тогда, скажем, у вас есть представление, которое отображает форму только с именем. Значение ModelState.IsValid в контроллере HttpPost для этого представления всегда будет ложным, поскольку Email требуется и отсутствует.
Я думал о том, чтобы иметь отдельные модели, одну для части, которая требует только Имя, и другую для части, которая требует как Имя, так и адрес электронной почты, но тогда я нарушаю принцип СУХОГО, потому что у меня будет проверка имени логика в двух местах.
Есть предложения? Можно ли получить аннотации данных, работающие таким образом? Должен ли я просто иметь два отдельных класса? Может быть CustomValidationAttribute , который проверяет флаг, прежде чем определить, требуется ли Email?