4
是否可以將值傳遞給錯誤消息。我已經試過這樣的事情:如何使用流暢驗證將值傳遞給錯誤消息
RuleFor(x => x.ForeName).Length(1, 255).WithLocalizedMessage(() => String.Format(ValidationErrors.TooLong, "255"));
ValidationErrors是我的資源文件,其中包含:
TooLong請使用超過{0}個字符。
此:
RuleFor(x => x.ForeName).Length(1, 255).WithLocalizedMessage(() => ValidationErrors.TooLong);
工作正常。
謝謝。我猜這樣的東西不會是一個解決方案:RuleFor(x => x.ForeName).Length(1,255).WithMessage(String.Format(ValidationErrors.TooLong,「255」)); – cs0815
問題在於它強制在構建規則時查找本地化的消息。這*可能*在某些情況下工作,但如果您正在緩存驗證器(例如,使用IoC容器),這是推薦的行爲(由於性能),那麼具有不同文化的用戶可能以錯誤的語言結束消息。 WithLocalizedMessage緩存資源類型和資源名稱,每次需要消息時都會強制重新查找。 –