移至 .NET Standard 2.0 后,View 中未显示 FluentValidation 错误

FluentValidation error doesn't show in View after moved to .NET Standard 2.0

我在我的 MVC .NET Core 项目中有 fluentvalidation,它可以成功地 return 验证错误到视图。

这些是代码

namespace FluentValidation.Domain.FluentValidation
{
    public class InputDepositViewModelValidator : AbstractValidator<InputDepositViewModel>
    {
        public InputDepositViewModelValidator()
        {
            RuleFor(reg => reg.Amount).NotNull().ScalePrecision(2,4);
        }
    }
}

但是,在我将 fluentvalidation 从 MVC .NET Core 3.1 项目移至 .NET Standard 2.0 项目后,fluentvalidation 不再有效。 fluentvalidation 错误没有出现在我的视图中。

有人知道为什么吗?兼容性问题?但是,我查看了 fluentvalidation 官方文档,它支持.NET Standard 2.0。

这是我的 .NET Core 3.0 MVC,Startup.cs

public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews(opt =>
            {
                opt.Filters.Add(typeof(ValidationFilterAttribute));
            }).AddFluentValidation(fvc =>
            fvc.RegisterValidatorsFromAssemblyContaining<Startup>());
        }

namespace FluentValidationWebApp.ActionFilters
{
    public class ValidationFilterAttribute : IActionFilter
    {
        public void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (!filterContext.ModelState.IsValid)
            {
                filterContext.Result = new BadRequestObjectResult(filterContext.ModelState);
            }
        }

        public void OnActionExecuted(ActionExecutedContext filterContext)
        {

        }
    }
}

看起来您已将验证器移至另一个程序集“FluentValidation.Domain”

如果是这样,那么你需要在Startup.cs中的Configure方法中添加流畅验证的同时更改类型。

public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews(opt =>
        {
            opt.Filters.Add(typeof(ValidationFilterAttribute));
        }).AddFluentValidation(fvc =>
        fvc.RegisterValidatorsFromAssemblyContaining<"Add a type from your FluentValidation.Domain assembly">());
    }