Я нашел способ выполнить условную проверку из ViewModel. Класс VM должен будет реализовать интерфейс IValidatableObject.
Затем добавьте метод, подобный этому, внизу виртуальной машины:
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (validationContext == null)
return null;
var valResults = new List<ValidationResult>();
if (!EmailExists))
valResults.Add(new ValidationResult($"Email is required.", new[] { "ErrorEmail" }));
return valResults;
}
И, конечно, вам понадобится это в представлении:
@Html.ValidationMessage("ErrorEmail")
Надеюсь, это поможет!