在应用服务中调用验证方法

Posted

技术标签:

【中文标题】在应用服务中调用验证方法【英文标题】:Call a validation method in application service 【发布时间】:2021-11-21 00:41:49 【问题描述】:

如何在需要时从应用程序服务中的验证器类调用方法并抛出异常消息并将其显示在基于“aspnetboilerplate”的项目中?

【问题讨论】:

抱歉,您的要求对我来说很难,请您描述得更形象一些吗? 有一个 dto 作为参数传递给方法,我使用 ABP.FluentValidation 来检查验证,ABP 将运行 Validator 类自动验证 dto 类....现在,我想调用方法即在应用服务的 Validator 类中随时需要 【参考方案1】:

AbstractValidator<T>Validate 方法。 see.

Install-Package Abp.FluentValidation
public class MyDto

    public int Value  get; set; 


public class MyDtoValidator : AbstractValidator<MyDto>

    public MyDtoValidator()
    
        RuleFor(x => x.Value).InclusiveBetween(1, 99)
            .WithMessage("Value must be between 1 and 99");
    

var myDtoInstance = new MyDto Value: 505 ;
var myValidatorInstance = new MyValidator();
myDtoValidatorInstance.Validate(myDtoInstance);

在您的自定义消息的最后一行引发异常。

另见AbstractValidatortests。

【讨论】:

它可以帮助我,感谢您的合作;)【参考方案2】:

您无需从验证器调用方法来验证 DTO。

查看link中FluentValidation标题下的内容

Install-Package Abp.FluentValidation
[DependsOn(typeof(AbpFluentValidationModule))]
public class MyProjectAppModule : AbpModule

    

public class MyDto

    public int Value  get; set; 


public class MyTestController : AbpController 

    public JsonResult GetJsonValue([FromQuery] MyDto dto)
    
        return Json(new MyDto
        
            Value = dto.Value
        );
    

public class MyDtoValidator : AbstractValidator<MyDto>

    public MyDtoValidator()
    
        RuleFor(x => x.Value).InclusiveBetween(1, 99);
    

【讨论】:

MyDtoValidator 类及其方法自动调用,这不是我想要的,我想在需要时调用 MyDtoValidator 类的方法

以上是关于在应用服务中调用验证方法的主要内容,如果未能解决你的问题,请参考以下文章

用户对 facebook 进行身份验证后未调用应用程序打开 Url 方法

创建一个 TOKEN 系统来验证 Web 服务调用的最佳方法是啥?

无法使用 WCF 调用具有基本身份验证的 Web 服务

身份验证服务错误中的完成处理程序

System.err:调用 js 方法 onCreate 失败 - System.err:错误:缺少主条目。应用程序无法启动。验证应用引导程序

如何在身份验证之后和注销之前调用方法? (春季安全)