建设银行交学费网站,微信公众号推文模板素材,国内最好用的免费建站平台,网络营销的手段包括FluentValidation模块支持在ASP.NET Core项目中进行手工或自动验证#xff0c;主要验证方式包括以下三种#xff1a; 1#xff09;手工注册验证类#xff0c;并在控制器或其它模块中调用验证#xff1b; 2#xff09;基于ASP.NET验证管道#xff08;validation … FluentValidation模块支持在ASP.NET Core项目中进行手工或自动验证主要验证方式包括以下三种 1手工注册验证类并在控制器或其它模块中调用验证 2基于ASP.NET验证管道validation pipeline自动验证 3基于过滤器自动验证。 定义以下数据类及验证类学习并测试上述三种验证方式
//数据类及验证类定义
public class AppUser
{public string UserName { get; set; }public string Sex { get; set; }public int Age { get; set; }public string Email { get; set; }
}public class AppUserValidator : AbstractValidatorAppUser
{public AppUserValidator(){RuleFor(r r.UserName).NotEmpty().WithMessage(姓名不能为空);RuleFor(r r.Age).GreaterThan(10).WithMessage(年龄必须超过10岁);RuleFor(r r.Email).EmailAddress();}
}首先是手工注册及验证新建WebApi项目在Program文件中手工注册验证接口及对应验证类然后在控制器中调用验证示例代码及效果如下所示。除了手工注册FluentValidation还提供自动注册函数不需要手工逐个注册详细介绍见下面代码中的注释。
//program.cs中注册
//这里也可以安装FluentValidation.DependencyInjectionExtensions包然后
//在program.cs中调用builder.Services.AddValidatorsFromAssemblyContainingAppUserValidator();
//AddValidatorsFromAssemblyContaining函数会将AppUserValidator所在程序集中
//所有继承自IValidator的验证类自动注册
builder.Services.AddScopedIValidatorAppUser, AppUserValidator();//controller类中使用
public class UserController : ControllerBase
{private readonly IValidatorAppUser _user; public UserController(IValidatorAppUser user){_user user;}[HttpPost]public string NewUser(AppUser user) {FluentValidation.Results.ValidationResult result _user.Validate(user);if (result.IsValid) {return 验证成功;}else{return result.ToString();}}
}第二种方式是基于ASP.NET验证管道自动验证但FluentValidation官网文档中已不推荐这种方式原因包括以下几点 aASP.NET验证管道不支持异步如果验证类中有异步操作则验证类无法执行且会抛异常 b验证管道仅支持MVC和Razor不支持Minimal APIs、Blazor等 c难以调试。自动验证模式难以调试程序问题。 基于ASP.NET验证管道自动验证时只需在Program文件中调用AddFluentValidationAutoValidation函数需安装FluentValidation.AspNetCore包并注册验证接口及对应验证类即可。ASP.NET Core项目在调用控制器函数前会自动调用验证类进行验证。示例代码及运行效果如下所示
//program.cs中注册
builder.Services.AddFluentValidationAutoValidation();
builder.Services.AddValidatorsFromAssemblyContainingAppUserValidator();基于过滤器自动验证 需安装SharpGrip.FluentValidation.AutoValidation 包详细介绍见参考文献3该包的使用方式和基于ASP.NET验证管道自动验证类似只需在program文件中添加相应函数即可示例代码如下所示
//program.cs中注册
using SharpGrip.FluentValidation.AutoValidation.Mvc.Extensions;builder.Services.AddFluentValidationAutoValidation();
builder.Services.AddValidatorsFromAssemblyContainingAppUserValidator();参考文献 [1]https://docs.fluentvalidation.net/en/latest/start.html [2]https://github.com/FluentValidation/FluentValidation.AspNetCore#aspnet-core-integration-for-fluentvalidation [3]https://github.com/SharpGrip/FluentValidation.AutoValidation