このプロパティをMVCモデルで検証しようとしています。このモデルには、コンマで区切られた0個以上の電子メールアドレスを含めることができます。
public class DashboardVM
{
public string CurrentAbuseEmails { get; set; }
...
}
問題は、電子メールアドレスに組み込まれている流暢な検証ルールを使用してこれをどのように行うかです。今のところ、Mustと正規表現を使用した解決策がありますが、それは十分にエレガントではありません。
public DashboardVMValidator()
{
RuleFor(x => x.CurrentAbuseEmails).Must(BeValidDelimitedEmailList).WithMessage("One or more email addresses are not valid.");
}
private bool BeValidDelimitedEmailList(string delimitedEmails)
{
//... match very very long reg. expression
}
これまでのところ、RuleFor(...)。EmailAddress()を含む最も近い解決策は、以下のカスタムValidatorを作成し、文字列から各電子メールでValidateを呼び出すことでしたが、何らかの理由で機能しませんでした(AbuseEmailValidatorは述語x=>x-validatorを呼び出すとき。各電子メールで検証します)。
public class AbuseEmailValidator : AbstractValidator<string>
{
public AbuseEmailValidator()
{
RuleFor(x => x).EmailAddress().WithMessage("Email address is not valid");
}
}
これを簡単な方法で行う方法はありますか?このソリューションに似ていますが、SetCollectionValidatorを使用できないため、文字列のリストではなく1つの文字列を使用します(または使用できますか?):Fluent Validationを使用して、リスト内の各文字列に対してどのように検証しますか?