Sie könnten hierfür ein benutzerdefiniertes Attribut verwenden. Kurz gesagt, das benutzerdefinierte Attribut ruft beide Werte ab und stellt dann sicher, dass mindestens einer über einen Wert verfügt. Weitere Informationen finden Sie unter this page. Hier ist ein Beispiel (ungetestet Code):
[AttributeUsage(AttributeTargets.Property, AllowMultiple =false, Inherited = false)]
public class ValidatePersonName: ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
string FirstName = (string)validationContext.ObjectType.GetProperty("FirstName").GetValue(validationContext.ObjectInstance, null);
string LastName = (string)validationContext.ObjectType.GetProperty("LastName").GetValue(validationContext.ObjectInstance, null);
//check at least one has a value
if (string.IsNullOrEmpty(FirstName) && string.IsNullOrEmpty(LastName))
return new ValidationResult("At least one is required!!");
return ValidationResult.Success;
}
}
Verbrauch:
class Person{
[ValidatePersonName]
FirstName{get;set;}
LastName{get;set;}
}
Ich weiß nicht, asp.net, aber wenn diese Arbeit als Lehre in PHP, sollten Sie ein Ereignis für PrePersist Daten auf die haben Datenbank. Sie sollten eine Bedingung für dieses Ereignis erstellen, die einen Fehler auslöst, wenn beide Werte null sind? –