加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在模型验证之前获取Filter以执行

发布时间:2020-12-16 06:27:15 所属栏目:asp.Net 来源:网络整理
导读:我有一个过滤器,它将当前线程的CurrentUICulture设置为从cookie中提取的值 我有一个使用FluentValidation库验证的模型 [Validator(typeof(MyInputModelValidator))]public class MyInputModelpublic class MyInputModelValidator: AbstractValidatorMyInputM
我有一个过滤器,它将当前线程的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);

我希望通过这一点改变线程文化,以便为错误消息提取正确的语言

如果我在上面的验证器上设置了一个断点,我可以看到该线程有错误的文化.

如果我进一步运行代码,它会在过滤器上遇到一个断点,这会改变线程的文化

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

我已尝试使用filter属性修饰控制器操作方法并全局应用它,例如

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

这是web api,而不是mvc,虽然概念是相同的

有任何想法吗?

解决方法

How can I make the filter code run before the model validation kicks in

我认为这是不可能的.模型绑定在动作过滤器在管道中运行之前发生. ASP.NET Web API管道可以扩展但不能修改.您可以通过使用除筛选器之外的其他内容来设置文化,例如消息处理程序,从而解决此问题.授权过滤器也在模型绑定之前运行,但授权过滤器用于授权,可能不适合此.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读