我有以下FluentValidation擴展方法,用于驗證電話號碼:
我有以下FluentValidation擴展方法,用于驗證電話號碼:
public static IRuleBuilderOptions< T, string> MatchPhoneNumber<T> (this IRuleBuilder<T, string> rule)
=> rule.Matches(@"^(1-)?d{3}-d{3}-d{4}$").WithMessage("無效的電話號碼")。
我稱之為:
RuleFor( contact => contact.PhoneNumber).MatchPhoneNumber()
然而,我只想讓擴展方法在電話號碼字串不是空的/空的時候驗證該電話號碼。我可以通過以下方式來實作:
RuleFor( contact => contact.PhoneNumber)
.MatchPhoneNumber()
.When(contact => !string.IsNullOrEmpty(contact.PhoneNumber))。
但是有什么方法可以讓我在擴展方法本身中做到這一點嗎?
uj5u.com熱心網友回復:
你可以改變你的Regex來接受空字串,像這樣。
^$|^(1-)?d{3}-d{3}-d{4}$
然而,我已經嘗試了最新版本的FluentValidation(10.3.3),如果你向Matches規則傳遞一個空字串,它不會出現任何錯誤。在我的示例代碼中,盡管PhoneNumber是空的,但我在結果中沒有得到任何錯誤:
class Program
{
static void Main(string[] args)?
{
var contact = new Contact()。
var contactValidator = new ContactValidator()。
var result = contactValidator.Validate(contact);
Console.WriteLine(result.IsValid); // This returns true with null phone number[/span].
}
}
public class Contact
{
public string PhoneNumber { get; set; }
}
public class ContactValidator : AbstractValidator<Contact>
{
public ContactValidator()
{
RuleFor(contact => contact.PhoneNumber)
.MatchPhoneNumber()。
}
}
public static class Extensions
{
public static IRuleBuilderOptions< T, string> MatchPhoneNumber<T> (this IRuleBuilder<T, string> rule)
=> rule.Matches(@"^(1-)?d{3}-d{3}-d{4}$").WithMessage("無效的電話號碼")。
}
你是否使用了不同的方式來定義你的驗證器?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/331772.html
標籤:
