エラーメッセージに値を渡すことは可能ですか?流暢な検証を使用してエラーメッセージに値を渡す方法
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(ValidationErrors.TooLong、 "255")); – cs0815
この問題は、ルールが構築されたときにローカライズされたメッセージを参照するように強制することです。これはいくつかの状況ではうまくいくかもしれませんが、(パフォーマンスのために)推奨される動作であるバリデーターを(例えばIoCコンテナーを使用して)キャッシュしている場合、異文化のユーザーは間違った言語のメッセージで終わる可能性があります。 WithLocalizedMessageはリソースタイプとリソース名をキャッシュし、メッセージが必要になるたびに新しく検索します。 –