Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 客户端上的自定义电子邮件地址属性_C#_Asp.net Mvc_Client Side Validation_Validationattribute - Fatal编程技术网

C# 客户端上的自定义电子邮件地址属性

C# 客户端上的自定义电子邮件地址属性,c#,asp.net-mvc,client-side-validation,validationattribute,C#,Asp.net Mvc,Client Side Validation,Validationattribute,晚上好 我创建了下面的验证属性来检查电子邮件列表是否有效 [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter)] public class EmailAddressListAttribute : ValidationAttribute, IClientValidatable { private const string RegexPattern =

晚上好

我创建了下面的验证属性来检查电子邮件列表是否有效

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter)]
public class EmailAddressListAttribute : ValidationAttribute, IClientValidatable
{
    private const string RegexPattern = @"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*" +
                                        @"@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        ErrorMessage = $"{validationContext.DisplayName} contains invalid email addresses";

        var emailList = value.ToString().Split(';');
        return emailList.Where(e => !IsValidEmail(e))
            .ToList()
            .Count == 0 ? null : new ValidationResult(ErrorMessage);
    }

    private static bool IsValidEmail(string emailAddress)
    {
        return Regex.IsMatch(emailAddress, RegexPattern, RegexOptions.IgnoreCase);
    }

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        yield return new ModelClientValidationRule
        {
            ErrorMessage = ErrorMessage,
            ValidationType = "emailaddresslist"
        };
    }
}

我让它工作了!这是我的属性的代码

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public sealed class EmailAddressListAttribute : ValidationAttribute, IClientValidatable
{
    private const string DefaultErrorMessage = "{0} contains invalid email addresses.";
    private const string RegexPattern = @"[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*" +
                                        @"@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";

    public EmailAddressListAttribute()
      : base(DefaultErrorMessage)
    {
    }

    public override string FormatErrorMessage(string name)
    {
        return string.Format(ErrorMessageString, name);
    }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        ErrorMessage = $"{validationContext.DisplayName} contains invalid email addresses";

        if (value.ToString().IsNullOrWhiteSpace()) return null;

        var emailList = value.ToString().Split(';');

        return emailList.Where(e => !IsValidEmail(e))
            .ToList()
            .Count == 0 ? null : new ValidationResult(ErrorMessage);
    }

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        var clientValidationRule = new ModelClientValidationRule()
        {
            ErrorMessage = FormatErrorMessage(metadata.GetDisplayName()),
            ValidationType = "emailaddresslist"
        };

        clientValidationRule.ValidationParameters.Add("otherproperty", "");

        return new[] { clientValidationRule };
    }

    private static bool IsValidEmail(string emailAddress)
    {
        return Regex.IsMatch(emailAddress, RegexPattern, RegexOptions.IgnoreCase);
    }
}
[AttributeUsage(AttributeTargets.Property,AllowMultiple=false,Inherited=true)]
公共密封类EmailAddressListAttribute:ValidationAttribute,IClientValidable
{
private const string DefaultErrorMessage=“{0}包含无效的电子邮件地址。”;
private const string regexpatern=@“[a-z0-9!#$%&'*+/=?^ `{124;}-]+(?:\.[a-z0-9!#$%&'*+/=?^ `{124;}-]+”+
@“(?:[a-z0-9-]*[a-z0-9])?\)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])”;
公共EmailAddressListAttribute()
:base(DefaultErrorMessage)
{
}
公共重写字符串FormatErrorMessage(字符串名称)
{
返回string.Format(ErrorMessageString,name);
}
受保护的重写ValidationResult有效(对象值,ValidationContext ValidationContext)
{
ErrorMessage=$“{validationContext.DisplayName}包含无效的电子邮件地址”;
if(value.ToString().IsNullOrWhiteSpace())返回null;
var emailList=value.ToString().Split(“;”);
返回电子邮件列表。其中(e=>!IsValidEmail(e))
托利斯先生()
.Count==0?空:新的ValidationResult(ErrorMessage);
}
公共IEnumerable GetClientValidationRules(ModelMetadata元数据、ControllerContext上下文)
{
var clientValidationRule=新模型clientValidationRule()
{
ErrorMessage=FormatErrorMessage(metadata.GetDisplayName()),
ValidationType=“emailaddresslist”
};
clientValidationRule.ValidationParameters.Add(“otherproperty”和“”);
返回新的[]{clientValidationRule};
}
私有静态bool IsValidEmail(字符串emailAddress)
{
返回Regex.IsMatch(电子邮件地址、regexpatern、RegexOptions.IgnoreCase);
}
}
下面是用于客户端的jquery

(function ($) {
$.validator.addMethod("emailaddresslist", function (value, element, params) {
    if (!this.optional(element)) {
        if (value == "") return true;
        var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        var emailAddressList = value.split(";")
        var arrayLength = emailAddressList.length;
        for (var i = 0; i < arrayLength; i++) {
            if (!re.test(emailAddressList[i].trim())) return false;
        }
    }
    return true;
});
$.validator.unobtrusive.adapters.addSingleVal("emailaddresslist", "otherproperty");
}(jQuery));
(函数($){
$.validator.addMethod(“emailaddresslist”,函数(值、元素、参数){
如果(!this.optional(元素)){
if(value==“”)返回true;
变量re=/^([^()[\]\\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*)(\'+\”)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.[0-9]{1,3}.];
var emailAddressList=value.split(“;”)
var arrayLength=emailAddressList.length;
对于(变量i=0;i
您是否在使用不引人注目的验证?您需要为客户端验证编写脚本。建议您阅读。我已经尝试添加上面的javascript,但提交时无法启动。
(function ($) {
$.validator.addMethod("emailaddresslist", function (value, element, params) {
    if (!this.optional(element)) {
        if (value == "") return true;
        var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        var emailAddressList = value.split(";")
        var arrayLength = emailAddressList.length;
        for (var i = 0; i < arrayLength; i++) {
            if (!re.test(emailAddressList[i].trim())) return false;
        }
    }
    return true;
});
$.validator.unobtrusive.adapters.addSingleVal("emailaddresslist", "otherproperty");
}(jQuery));