3

我有2個屬性電子郵件和確認電子郵件。如何既爲本地化的屬性名稱 對於實例提供字符串格式ARG: -Fluent驗證比較字段字符串格式參數

public class Account 
{ 
    public string Email {get;set;} 
    public string ConfirmEmail {get;set;} 
} 

Public AccountValidator : AbstractValidator<Account> 
{ 
    public AccountValidator() 
    { 
     RuleFor(a=> a.Email) 
        .Equal(a=>a.ConfirmEmail) 
        .WithLocalizedMessage(() => MyResource.compareFields); 
    } 
} 

我的資源文件的消息是這樣的: -

'{}屬性名' 和「{??? }'字段不匹配。

我該用什麼?所以它說: -

'電子郵件'和'ConfirmEmail'字段不匹配。

回答

4

解決此問題的一種方法是在消息中定義自定義參數:{0}。所以你的消息在你的資源文件中看起來像這樣。

'{PropertyName}' and '{0}' fields do not match. 

而在"ConfirmEmail"傳遞一個額外的參數給WithLocalizedMessage電話:

RuleFor(a => a.Email) 
    .Equal(a => a.ConfirmEmail) 
    .WithLocalizedMessage(() => MyResource.compareFields, "ConfirmEmail"); 
+0

由於它的工作。 – user2232861