创建 DataAnnotation 以确保用户指定了一种类型的电子邮件地址并且存在默认值
Create DataAnnotation to make sure user has specified one type of email address and there is a default
我有一个人 class,其中一个人可以有 3 种类型的电子邮件地址 - 家庭、工作、其他。
必须至少指定其中之一,并且必须指定默认电子邮件地址 - 这只是一个布尔值。
我要用 DataAnnotation 试试这个(如果这是正确的方法?!)
关于如何编写此 DataAnnotation 的任何想法?
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; }
}
就我个人而言,我会将 Person
class 设为 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;
}
}
创建另一个 属性 以检查所有 3 个地址是否都是 空 ,并使用数据注释表明这个新的 属性 有一个 range 只能接受 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);
}
}
我有一个人 class,其中一个人可以有 3 种类型的电子邮件地址 - 家庭、工作、其他。
必须至少指定其中之一,并且必须指定默认电子邮件地址 - 这只是一个布尔值。
我要用 DataAnnotation 试试这个(如果这是正确的方法?!)
关于如何编写此 DataAnnotation 的任何想法?
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; }
}
就我个人而言,我会将 Person
class 设为 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;
}
}
创建另一个 属性 以检查所有 3 个地址是否都是 空 ,并使用数据注释表明这个新的 属性 有一个 range 只能接受 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);
}
}