移至 .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">());
}
我在我的 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">());
}