現在のスレッドの 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 ですが、概念は同じです
何か案は?