fluentvalidation 相关问题

Fluent Validation是一个ASP.NET MVC集成验证框架,允许开发人员使用表达式设置验证规则。它是可测试的并且与控制(依赖注入)模式和TDD(测试驱动开发)技术的反转完全兼容。

ASP.NET Core Web API - Fluent Validation 不验证用户登录服务

在 ASP.NET Core-6 Web API 中,我正在实现 Fluent Validation。我有这个代码。 模型: 公共类 OAuthLoginRequest { 公共字符串用户名{获取;放; } 公共字符串密码{获取; ...

回答 1 投票 0

有没有办法对 ViewModel 中的一组相似属性应用 Fluent Validation?

我得到了一个ViewModel(MovieNamesModel),如下所示: { 公共字符串?电影名称1 { 获取;放; } 公共字符串?电影名称2 { 获取;放; } 公共字符串?电影名称3 { 获取;放; } ... ... 酒吧...

回答 1 投票 0

不在 MediatR 管道中调用 FluentValidation

我正在使用: 媒体R 12.1.1 FluentValidation 11.6.0 我已经创建了我的验证器: 内部类 CreateTemplateCommandValidator : AbstractValidator { 公开

回答 1 投票 0

FluentValidation 具有条件验证和实体属性的不同规则

我有一个实体: 公共类 BookDto { 公共字符串? id { 得到;放; } 公共字符串?外部图书 ID { 获取;放; } 公共字符串?名称{获取;放; } 公共字符串?描述 { g...

回答 0 投票 0

FluentValidation 带占位符的自定义验证器

说我有一个客户喜欢的课程 公共字符串注册号 公共布尔已存档 我创建了一个验证器 内部密封类 AddCustomerValidator : AbstractValidator...

回答 0 投票 0

相互依赖属性的 FluentValidation

假设我有一个开始编号和一个结束编号。结束编号必须大于起始编号。与起始编号相比,检查结束编号的最佳方法是什么? 这是我所拥有的。我正在使用 Mus...

回答 0 投票 0

在类上声明泛型参数的更好方法

我正在编写一个 FluentValidation 自定义验证器来验证两个只读集合是否具有相同数量的元素。 我正在使用 VS2022 和 FluentValidation v11.5.2。 我目前有以下...

回答 0 投票 0

使用一条消息验证多个属性

我正在尝试验证具有三个必需属性的类。 如果其中一个或多个为空,则它应该触发一条验证消息。 有没有一种惯用的方式来流利地描述这个

回答 2 投票 0

流畅的验证 - 如何循环遍历列表<string>

这是我的 xml: 别名 VENKAT...

回答 1 投票 0

如何使用 FluentValidation .net 6 抛出异常?

我将我的 web api 从 asp net core 3.1 迁移到 .net 6,我在使用 FluentValidation 库时遇到了一些问题。 RuleFor(x => x.Name) 。不是空的() .OnFailure(x =&...

回答 1 投票 0

我正在尝试在 Blazor 模型中进行儿童 Fluent 验证,但效果不佳

我正在为我在 blazor 项目中的课程做 FluentValidation。 模型和验证类如下所示。 公开课 A{ 公共字符串 Afield1 { 得到;放; } 公共字符串 Afield2 {...

回答 0 投票 0

VB.Net 使用 FluenValidation 库验证类属性

大家好我正在尝试在 VB.Net 中使用 FluentValidation 来验证简单类的属性 这是类: Public Sub New(ByVal descrizione As String,metristoppino As Integer,assortim ...

回答 0 投票 0

无法加载类型“FluentValidation.Attributes.ValidatorAttribute”

System.TypeLoadException:'无法从程序集'FluentValidation,Version = 9.0.0.0,Culture = neutral,PublicKeyToken = 7de548da2fbae0f0'加载类型'FluentValidation.Attributes.ValidatorAttribute'。'...

回答 1 投票 0

实体框架流畅的多对多配置

我有这些表: 物品 编号(PK) 类别A B类 C类 类别 类别(PK) 类别类型 (PK) 市场(PK) 姓名 在 Item 表上,我想要 3 个导航属性: CategoriesA:使用 Categ...

回答 1 投票 0

带有 SetAsyncValidator 的 FluentValidator

公共类 SubmitCarValidator : AbstractValidator { 私有只读 ICarRepository _carRepository; 公共提交汽车验证器(ICarRepository carRepository) { _carRepository = carRepository;

回答 1 投票 0

流畅的验证自定义响应模型

我正在使用 Fluent Validation 来管理 asp.net 7 中的验证,它配置如下或跨所有端点自动管理。 builder.Services.AddFluentValidationAutoValidation(); 建立...

回答 1 投票 0

Blazor Wasm 和带有本地化的 FluentValidation

在我的剃须刀档案中 在我的剃须刀文件夹里 <EditForm id="@EditFromId" Model="@Entity" OnValidSubmit="Save"> <FluentValidator TValidator="PersonalInformationValidator" /> 在我的 PersonalInformationValidator 类中 public PersonalInformationValidator(IStringLocalizer<ErrorResource> Loc) { ClassLevelCascadeMode = CascadeMode.Continue; RuleFor(entity => entity.FatherName).NotEmpty().WithMessage(x=>Loc["Father-Name-Required"]) .Length(3, 50).WithMessage(x => Loc["Father-Name-Length"]); } 我得到编译时错误 错误 CS1662 无法将 lambda 表达式转换为预期的委托类型,因为块中的某些返回类型不能隐式转换为委托返回类型 和 错误 CS0310“PersonalInformationValidator”必须是具有公共无参数构造函数的非抽象类型,以便将其用作泛型类型或方法“FluentValidator”中的参数“TValidator” 试图将此行添加到 Program.cs builder.Services.AddTransient<IValidator<PersonalInformation>, PersonalInformationValidator>(); 还尝试创建一个无参数的contractor PersonalInformationValidator,它解决了Validator does not work的编译时错误。 我正在使用 FluentValidation (11.4.0) 和客户端站点中的此类 public class FluentValidator<TValidator> : ComponentBase where TValidator : IValidator, new() { private readonly static char[] separators = new[] { '.', '[' }; private TValidator? validator; [CascadingParameter] private EditContext? EditContext { get; set; } protected override void OnInitialized() { if (EditContext != null) { validator = new TValidator(); var messages = new ValidationMessageStore(EditContext); EditContext.OnFieldChanged += (sender, eventArgs) => ValidateModel((EditContext?)sender, messages); EditContext.OnValidationRequested += (sender, eventArgs) => ValidateModel((EditContext?)sender, messages); } } private void ValidateModel(EditContext? editContext, ValidationMessageStore messages) { if (editContext != null) { var context = new ValidationContext<object>(editContext.Model); var validationResult = validator?.Validate(context); messages.Clear(); if (validationResult != null) { foreach (var error in validationResult.Errors) { var fieldIdentifier = ToFieldIdentifier(editContext, error.PropertyName); messages.Add(fieldIdentifier, error.ErrorMessage); } editContext.NotifyValidationStateChanged(); } } } private static FieldIdentifier ToFieldIdentifier(EditContext editContext, string propertyPath) { var obj = editContext.Model; while (true) { var nextTokenEnd = propertyPath.IndexOfAny(separators); if (nextTokenEnd < 0) { return new FieldIdentifier(obj, propertyPath); } var nextToken = propertyPath.Substring(0, nextTokenEnd); propertyPath = propertyPath.Substring(nextTokenEnd + 1); object newObj; if (nextToken.EndsWith("]")) { nextToken = nextToken.Substring(0, nextToken.Length - 1); var prop = obj.GetType().GetProperty("Item"); var indexerType = prop?.GetIndexParameters()[0].ParameterType; var indexerValue = Convert.ChangeType(nextToken, indexerType); newObj = prop?.GetValue(obj, new object[] { indexerValue }); } else { var prop = obj.GetType().GetProperty(nextToken); if (prop == null) { throw new InvalidOperationException($"Could not find property named {nextToken} on object of type {obj.GetType().FullName}."); } newObj = prop?.GetValue(obj); } if (newObj == null) { return new FieldIdentifier(obj, nextToken); } obj = newObj; } } } 从new()约束中删除无参数构造函数TValidator的约束。 从 DI 获得 IStringLocalizer<ErrorResource> 服务。 用Activator.CreateInstance()创建TValidator实例并提供Loc作为参数。 public class FluentValidator<TValidator> : ComponentBase where TValidator : IValidator { private readonly static char[] separators = new[] { '.', '[' }; private TValidator? validator; [CascadingParameter] private EditContext? EditContext { get; set; } [Inject] IStringLocalizer<ErrorResource> Loc { get; set; } protected override void OnInitialized() { if (EditContext != null) { validator = (TValidator)Activator.CreateInstance(typeof(TValidator), new object[] { Loc }); ... } } ... } 演示

回答 1 投票 0

ASP.NET Core Web API - 如何使用流利的验证器验证和格式化 start_date 和 end_date

在我的 ASP.NET Core-6 Web API 中,我得到了一个请求正文以使用 Fluent Validation 进行验证,然后传递到第三方 API。这是请求正文。 请求正文: { “结束日期”:...

回答 1 投票 0

当输入属性是对象列表时,FluentValidation 不会验证 List<string>

我有以下模型(为简洁起见进行了简化) 公共类 AdvancedFilter { 公共列表值{get;放; } } 然后我的 ApiController 如下 [HttpPost("测试&q...

回答 1 投票 0

.net6/FluentValidation:从另一个程序集注册所有验证器类不起作用

我想在我的 Web 项目的 program.cs 中注册所有位于另一层的验证器。但一个命令 services.AddValidatorsFromAssembly(AssemblyName) 不起作用。 我的

回答 0 投票 0

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.