Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 获取要在模型验证之前执行的筛选器_Asp.net Mvc_Asp.net Web Api_Action Filter - Fatal编程技术网

Asp.net mvc 获取要在模型验证之前执行的筛选器

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

我有一个过滤器,它将当前线程的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);
这是WebAPI,不是mvc,尽管概念是相同的

有什么想法吗

如何在模型验证开始之前运行过滤器代码


我认为这是不可能的。模型绑定发生在动作过滤器在管道中运行之前。ASP.NET Web API管道可以扩展,但不能修改。您可以通过使用过滤器以外的其他工具来设置区域性,例如消息处理程序,来解决这种情况。授权筛选器也会在模型绑定之前运行,但授权筛选器用于授权,可能不太适合这种情况。

使用授权筛选器处理此问题是否存在任何重大问题,或者这只是一种不好的做法?模型绑定发生在操作筛选器之前,但这并不意味着验证也应该在之前进行。这是一个设计错误,在操作过滤器之前强制验证是没有意义的。实际上,过滤器可能会撤销客户机请求,因此在这种情况下甚至不需要验证(由于他们构建它的方式,不必要的开销)。
GlobalConfiguration.Configuration.Filters.Add(new LocalizationApiFilter());