Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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# 如何在Fluent验证中根据字符串列表验证字符串?_C#_.net_Validation_Model View Controller_Fluentvalidation - Fatal编程技术网

C# 如何在Fluent验证中根据字符串列表验证字符串?

C# 如何在Fluent验证中根据字符串列表验证字符串?,c#,.net,validation,model-view-controller,fluentvalidation,C#,.net,Validation,Model View Controller,Fluentvalidation,我有一个电子邮件地址字段,其中客户端验证不允许使用tempmailder.com或dispostable.com等少数临时域 在服务器端,我使用了fluent验证来指定验证规则 web.config文件中不允许以逗号分隔的字符串形式显示的临时域 我是否可以指定一种方法来验证用户根据不允许的电子邮件域列表输入的值 RuleFor(x=>x.EMail). and something 谢谢您可以实现如下功能: public class MyObjValidator : AbstractVa

我有一个电子邮件地址字段,其中客户端验证不允许使用tempmailder.com或dispostable.com等少数临时域

在服务器端,我使用了fluent验证来指定验证规则

web.config文件中不允许以逗号分隔的字符串形式显示的临时域

我是否可以指定一种方法来验证用户根据不允许的电子邮件域列表输入的值

RuleFor(x=>x.EMail). and something 

谢谢

您可以实现如下功能:

public class MyObjValidator : AbstractValidator<MyObj> {
        public MyObjValidator()
        {
            // Other rules for my object
            // .
            // .
            RuleFor(o => o.Email)
                .NotEmpty()
                .Must(BeNonBannedDomain)
                .WithMessage("Please specify a valid email address");
        }

        private bool BeNonBannedDomain(string email)
        {
            var domainName = GetDomainName(email); // a method to extract the dmain name from the email
            return !someListOfBannedDomains.Contains(domainName); // a list of all the banned domains that I need to check against.
        }
    }
公共类MyObjValidator:AbstractValidator{
公共验证器()
{
//我的对象的其他规则
// .
// .
规则(o=>o.Email)
.NotEmpty()
.必须(贝农班纳多曼)
.WithMessage(“请指定有效的电子邮件地址”);
}
私人bool BeNonBannedDomain(字符串电子邮件)
{
var domainName=GetDomainName(email);//从电子邮件中提取dmain名称的方法
return!someListofBanneddomans.Contains(domainName);//我需要检查的所有禁用域的列表。
}
}

希望这能有所帮助。

好吧,您可以实现如下功能:

public class MyObjValidator : AbstractValidator<MyObj> {
        public MyObjValidator()
        {
            // Other rules for my object
            // .
            // .
            RuleFor(o => o.Email)
                .NotEmpty()
                .Must(BeNonBannedDomain)
                .WithMessage("Please specify a valid email address");
        }

        private bool BeNonBannedDomain(string email)
        {
            var domainName = GetDomainName(email); // a method to extract the dmain name from the email
            return !someListOfBannedDomains.Contains(domainName); // a list of all the banned domains that I need to check against.
        }
    }
公共类MyObjValidator:AbstractValidator{
公共验证器()
{
//我的对象的其他规则
// .
// .
规则(o=>o.Email)
.NotEmpty()
.必须(贝农班纳多曼)
.WithMessage(“请指定有效的电子邮件地址”);
}
私人bool BeNonBannedDomain(字符串电子邮件)
{
var domainName=GetDomainName(email);//从电子邮件中提取dmain名称的方法
return!someListofBanneddomans.Contains(domainName);//我需要检查的所有禁用域的列表。
}
}
希望这有帮助。

RuleFor(x=>listOfBannedDomains.Contains(GetDomainFromEmail(x.Email))==false)
RuleFor(x=>listOfBannedDomains.Contains(GetDomainFromEmail(x.Email))==false)