如何在C#中使用EmailAddressAttribute验证字符串列表?

如何在C#中使用EmailAddressAttribute验证字符串列表?,c#,validation,data-annotations,email-address,C#,Validation,Data Annotations,Email Address,我有一个班级说“请求”。它有两个属性,如下所示。收件人的电子邮件验证工作正常。但是,它不适用于收件人 [EmailAddress] public string Recipient { get; set; } [EmailAddress] public List<string> Recipients { get; set; } [电子邮件地址] 公共字符串收件人{get;set;} [电邮地址] 公共列表收件人{get;set;} 感谢您的帮助。您可以在自定义属性中使用现有的

我有一个班级说“请求”。它有两个属性,如下所示。收件人的电子邮件验证工作正常。但是,它不适用于收件人

[EmailAddress] 
public string Recipient { get; set; }

[EmailAddress] 
public List<string> Recipients { get; set; }
[电子邮件地址]
公共字符串收件人{get;set;}
[电邮地址]
公共列表收件人{get;set;}

感谢您的帮助。

您可以在自定义属性中使用现有的EmailAddress属性

[AttributeUsage(AttributeTargets.Property)]
public sealed class EmailAddressListAttribute : ValidationAttribute
{
    private const string defaultError = "'{0}' contains an invalid email address.";
    public EmailAddressListAttribute()
        : base(defaultError) //
    {
    }

    public override bool IsValid(object value)
    {
        EmailAddressAttribute emailAttribute = new EmailAddressAttribute();
        IList<string> list = value as IList<string>;
        return (list != null && list.All(email => emailAttribute.IsValid(email)));
    }

    public override string FormatErrorMessage(string name)
    {
        return String.Format(this.ErrorMessageString, name);
    }
}
[AttributeUsage(AttributeTargets.Property)]
公共密封类EmailAddressListAttribute:ValidationAttribute
{
private const string defaultError=“{0}”包含无效的电子邮件地址。”;
公共EmailAddressListAttribute()
:base(默认错误)//
{
}
公共覆盖布尔值有效(对象值)
{
EmailAddressAttribute emailAttribute=新的EmailAddressAttribute();
IList list=作为IList的值;
return(list!=null&&list.All(email=>emailAttribute.IsValid(email));
}
公共重写字符串FormatErrorMessage(字符串名称)
{
返回String.Format(this.ErrorMessageString,name);
}
}

您可以在自定义属性中使用现有的EmailAddress属性

[AttributeUsage(AttributeTargets.Property)]
public sealed class EmailAddressListAttribute : ValidationAttribute
{
    private const string defaultError = "'{0}' contains an invalid email address.";
    public EmailAddressListAttribute()
        : base(defaultError) //
    {
    }

    public override bool IsValid(object value)
    {
        EmailAddressAttribute emailAttribute = new EmailAddressAttribute();
        IList<string> list = value as IList<string>;
        return (list != null && list.All(email => emailAttribute.IsValid(email)));
    }

    public override string FormatErrorMessage(string name)
    {
        return String.Format(this.ErrorMessageString, name);
    }
}
[AttributeUsage(AttributeTargets.Property)]
公共密封类EmailAddressListAttribute:ValidationAttribute
{
private const string defaultError=“{0}”包含无效的电子邮件地址。”;
公共EmailAddressListAttribute()
:base(默认错误)//
{
}
公共覆盖布尔值有效(对象值)
{
EmailAddressAttribute emailAttribute=新的EmailAddressAttribute();
IList list=作为IList的值;
return(list!=null&&list.All(email=>emailAttribute.IsValid(email));
}
公共重写字符串FormatErrorMessage(字符串名称)
{
返回String.Format(this.ErrorMessageString,name);
}
}
我的结局是:

/// <summary>
/// 
/// </summary>
[DataContract]
public class EmailAddress
{
    /// <summary>
    /// 
    /// </summary>
    [DataMember]
    [EmailAddress]
    public string Id { get; set; }

    /// <summary>
    /// 
    /// </summary>
    [DataMember(Name = "Name")]
    public string DisplayName { get; set; }
}
//
/// 
/// 
[数据合同]
公共类电子邮件地址
{
/// 
/// 
/// 
[数据成员]
[电邮地址]
公共字符串Id{get;set;}
/// 
/// 
/// 
[数据成员(Name=“Name”)]
公共字符串DisplayName{get;set;}
}
我的结局是:

/// <summary>
/// 
/// </summary>
[DataContract]
public class EmailAddress
{
    /// <summary>
    /// 
    /// </summary>
    [DataMember]
    [EmailAddress]
    public string Id { get; set; }

    /// <summary>
    /// 
    /// </summary>
    [DataMember(Name = "Name")]
    public string DisplayName { get; set; }
}
//
/// 
/// 
[数据合同]
公共类电子邮件地址
{
/// 
/// 
/// 
[数据成员]
[电邮地址]
公共字符串Id{get;set;}
/// 
/// 
/// 
[数据成员(Name=“Name”)]
公共字符串DisplayName{get;set;}
}

U可以很容易地编写自定义属性。我想知道是否已经有了此属性或语法。我还可以为Email编写一个单独的类,比如Recipient{EmailId,Name etc},并在该类中应用EmailAddressAttribute。我还可以为Email编写一个单独的类,比如Recipient{EmailId,Name等},并在该类中应用EmailAddressAttribute。这里我使用List而不是List。这里我使用List而不是List。