Asp.net mvc 获取要在模型验证之前执行的筛选器
我有一个过滤器,它将当前线程的CurrentUICulture设置为从cookie中提取的值 我有一个模型正在使用FluentValidation库进行验证Asp.net mvc 获取要在模型验证之前执行的筛选器,asp.net-mvc,asp.net-web-api,action-filter,Asp.net Mvc,Asp.net Web Api,Action Filter,我有一个过滤器,它将当前线程的CurrentUICulture设置为从cookie中提取的值 我有一个模型正在使用FluentValidation库进行验证 [Validator(typeof(MyInputModelValidator))] public class MyInputModel public class MyInputModelValidator: AbstractValidator<MyInputModel> { public MyInp
[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);
这是WebAPI,不是mvc,尽管概念是相同的
有什么想法吗
如何在模型验证开始之前运行过滤器代码
我认为这是不可能的。模型绑定发生在动作过滤器在管道中运行之前。ASP.NET Web API管道可以扩展,但不能修改。您可以通过使用过滤器以外的其他工具来设置区域性,例如消息处理程序,来解决这种情况。授权筛选器也会在模型绑定之前运行,但授权筛选器用于授权,可能不太适合这种情况。使用授权筛选器处理此问题是否存在任何重大问题,或者这只是一种不好的做法?模型绑定发生在操作筛选器之前,但这并不意味着验证也应该在之前进行。这是一个设计错误,在操作过滤器之前强制验证是没有意义的。实际上,过滤器可能会撤销客户机请求,因此在这种情况下甚至不需要验证(由于他们构建它的方式,不必要的开销)。
GlobalConfiguration.Configuration.Filters.Add(new LocalizationApiFilter());