6

現在のスレッドの CurrentUICulture を Cookie から取得した値に設定するフィルターがあります

そして、FluentValidation ライブラリを使用して検証されているモデルがあります

[Validator(typeof(MyInputModelValidator))]
public class MyInputModel


public class MyInputModelValidator: AbstractValidator<MyInputModel>
    {
        public MyInputModelValidator()
        {
            var x = Thread.CurrentThread.CurrentUICulture.Name;
            RuleFor(o => o.Country).NotEmpty().WithMessage(Resources.NoCountryError);

この時点までにスレッド カルチャを変更して、エラー メッセージの正しい言語を取得するようにしたい

上記のバリデーターにブレークポイントを設定すると、スレッドのカルチャが間違っていることがわかります。

コードをさらに実行すると、フィルターのブレークポイントにヒットし、スレッドのカルチャが変更されます

モデルの検証が開始される前にフィルター コードを実行するにはどうすればよいですか

コントローラーアクションメソッドをフィルター属性で装飾し、それをグローバルに適用しようとしました。

GlobalConfiguration.Configuration.Filters.Add(new LocalizationApiFilter());

これは mvc ではなく Web API ですが、概念は同じです

何か案は?

4

1 に答える 1