3
我有一個過濾器,設置當前線程的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());
這是網頁API,而不是MVC,但其中的概念是相同的
什麼想法?
消息處理程序的工作 - 感謝 – ChrisCa
使用授權過濾器來處理這個問題是否存在任何主要問題,或者這只是不好的做法? – user441365
模型綁定發生在動作過濾器之前,但這並不意味着之前也應該發生驗證。這是一個設計錯誤,強制驗證先於動作過濾器是沒有意義的。實際上,過濾器可能會撤銷客戶端請求,所以在這種情況下甚至不需要驗證(由於構建它的方式而導致不必要的開銷)。 – Alisson