创建数据注释以确保用户指定了一种类型的电子邮件地址,并且存在默认值



我有一个 Person 类,一个人可以有 3 种类型的电子邮件地址 - 家庭、工作、其他。

必须至少指定其中一个,并且必须指定默认电子邮件地址 - 这只是一个布尔值。

我要用数据注释来尝试这个(如果这是正确的方法?!

任何想法如何对此数据注释进行编码?

public class Email
{
[EmailAddress]
public string Address { get; set; }
public bool? Default { get; set; }
}
public class PersonEmail
{
public Email Home { get; set; }
public Email Work { get; set; }
public Email Other { get; set; }
}
public class Person
{
//Other property goes here
//Other property goes here
//Other property goes here
//Other property goes here
[MyDefaultEmailAddressValidation]   
public PersonEmail Email { get; set; }
}   

创建另一个属性以检查是否所有 3 个地址都为空,并使用数据注释表明此新属性的范围只能接受true

例:

[Range(typeof(bool), "true", "true", ErrorMessage = "The field Email must be informed.")]
public bool IsEmailInformed
{
get
{
return (string.IsNullOrEmpty(Home.Address) == false ||
string.IsNullOrEmpty(Work.Address) == false ||
string.IsNullOrEmpty(Other.Address) == false);
}
}

就个人而言,我会Person类作为IValidatableObject,并在必要时检查天气是否有效。

public class Person : IValidatableObject
{
public PersonEmail Email {get;set;}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
var results = new List<ValidationResult>();
if (Email.Home == null && Email.Work == null && Email.Other == null)
results.Add(new ValidationResult("At least one email address have to be provided!"));
return results;
}
}

相关内容

最新更新