我試圖驗證在MVC模式這個屬性,它可以包含零個或多個電子郵件地址由逗號分隔:驗證對一個字符串包含逗號分隔的電子郵件
public class DashboardVM
{
public string CurrentAbuseEmails { get; set; }
...
}
的問題是我怎麼做到這一點使用電子郵件地址的內置流暢驗證規則? 現在我有一個解決方案,使用必須和正則表達式的作品,但我沒有找到它......足夠優雅。
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的()是下面創建一個自定義的驗證程序,並調用驗證從字符串每封電子郵件,但沒有出於某種原因(AbuseEmailValidator無法在每個電子郵件中調用validator.Validate時得到我的謂詞x => x-)。
public class AbuseEmailValidator : AbstractValidator<string>
{
public AbuseEmailValidator()
{
RuleFor(x => x).EmailAddress().WithMessage("Email address is not valid");
}
}
有沒有辦法以一些簡單的方式做到這一點?同樣的事情也該解決方案,但有一個字符串,而不是字符串列表,因爲我不能使用SetCollectionValidator(或可以嗎?):How do you validate against each string in a list using Fluent Validation?
良好的答覆,exacly我需要什麼,thx :) – lsp